色を反転するためのconfigChangesはありますか?


8

Android に、デバイスの[ configChanges反転 ]オプションを変更するためにAndroidManifestのアクティビティ属性に追加するフラグがあるかどうかを知りたいです。

アンドロイドのdocショー以下のフラグ: - "MCC"
- "MNC"
- "ロケール"
- "タッチスクリーン"
- "キーボード"
- "keyboardHidden"
- "ナビゲーション"
- "screenLayout"
- "fontScale"
- "uiMode" //これはダークモード用です
-"方向"
-"密度"
-"画面サイズ"
-"最小画面サイズ"

しかし、それらのどれもそれを扱いません。


色の反転オプション:

ここに画像の説明を入力してください


1
Android 10(Pixel 3)またはAndroid 9(Galaxy S9)の[設定]に「色の反転」が表示されません。このオプションはどこにありますか?
CommonsWare

2
指摘してくれてありがとう!それをいじってみると、それは純粋にGPUのものであり、実際には構成の変更ではないのではないかと思いますが、それは推測にすぎません。これを切り替えると、アクティビティの構成が変更されますか?
CommonsWare

1
AFAIK onConfigurationChanged()は、適切なandroid:configChanges属性があり、デフォルトの構成変更動作をオプトアウトした場合にのみ発生します。「色の反転」トグルを切り替えた後、アクティビティは破棄され、再作成されますか?
CommonsWare

1
OK、それは間違いなく設定変更です。Logcatにシステムメッセージがない限り、それがどのような構成変更であるかを判断する方法と、を介してそれをオプトアウトする方法がわかりませんandroid:configChanges。文書化されたものをすべて試してもandroid:configChangesうまくいかなかった場合、その値は文書化されていないか、存在しない(つまり、オプトアウトできない)かのいずれかであり、どちらも優れたオプションではありません。:-(
CommonsWare

1
@CommonsWare申し訳ありませんが、Androidには色反転変更のフラグがありません。私はドキュメント(mnc|locale|touchscreen|keyboard|keyboardHidden|navigation|screenLayout|fontScale|uiMode|orientation|density|screenSize|smallestScreenSize)で利用可能なすべてのフラグを使用してテストしましたが、onConfigurationChangedコールバックを発生させるものはありませんでした= /。とにかく、私はあなたの注意、時間、そして喜んで助けてくれてありがとうございました\ o /
Augusto Carmo

回答:


1

反転色の状態を確認する必要がある場合、考えられる解決策は2つだけです。

手動チェック。この質問からの回答:
有効化/無効化ステータスとアクセシビリティの色反転モードの取得

fun isInversionModeEnabled(): Boolean {
        var isInversionEnabled = false
        val accessibilityEnabled = try {
            Settings.Secure.getInt(contentResolver, Settings.Secure.ACCESSIBILITY_DISPLAY_INVERSION_ENABLED)
        } catch (e: Settings.SettingNotFoundException) {
            Log.d(TAG, "Error finding setting ACCESSIBILITY_DISPLAY_INVERSION_ENABLED: " + e.message)
            Log.d(TAG, "Checking negative color enabled status")
            val SEM_HIGH_CONTRAST = "high_contrast"
            Settings.System.getInt(contentResolver, SEM_HIGH_CONTRAST, 0)
        }
        if (accessibilityEnabled == 1) {
            Log.d(TAG, "inversion  or negative colour is enabled")
            isInversionEnabled = true
        } else {
            Log.d(TAG, "inversion  or negative colour is disabled")
        }
        return isInversionEnabled
    }

そして、あなたも使うことができますAccessibilityService
反転色が変わったとき、私はそのようなイベントを持っています:

EventType: TYPE_VIEW_CLICKED; EventTime: 170718119; PackageName: com.android.systemui; 
MovementGranularity: 0; Action: 0; ContentChangeTypes: []; WindowChangeTypes: [] [
ClassName: android.widget.Switch; Text: [Invert colors]; ContentDescription: On;

だから私はこのようになんとかして現在の状態をチェックすることができます:

override fun onAccessibilityEvent(event: AccessibilityEvent) {
        val isInvertedColorsChanged = event.text.contains("Invert colors")
        if (isInvertedColorsChanged) {
            val isEnabled = event.contentDescription == "On"
            //do what you need
        }
    }

すべてのデバイスで動作するかどうかはわかりません。
これまでに行ったことがないので、もっと良い解決策があるかもしれません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.