Có cấu hình cho thay đổi Màu đảo ngược không


8

Tôi muốn biết liệu Android có bất kỳ cờ nào được thêm vào configChangestrong thuộc tính Activity trong AndroidManifest để sửa đổi trong tùy chọn Invert Colors của thiết bị hay không.

Tài liệu android hiển thị các cờ sau: - "mcc"
- "mnc"
- "locale"
- "màn hình cảm ứng"
- "bàn phím"
- "keyboardHidden"
- "navigation"
- "screenLayout"
- "fontScale"
- "uiMode" // cái này dành cho chế độ tối
- "định hướng"
- "mật độ
"
- "kích thước màn hình" - "smallScreenSize "

Nhưng không ai trong số họ đối phó với nó.


Tùy chọn màu đảo ngược:

nhập mô tả hình ảnh ở đây


1
Tôi không thấy "đảo ngược màu sắc" trong Cài đặt trên Android 10 (Pixel 3) hoặc Android 9 (Galaxy S9). Bạn đang thấy tùy chọn này ở đâu?
CommonsWare

2
Cảm ơn đã chỉ ra rằng! Chơi với nó, tôi nghi ngờ đó hoàn toàn là một thứ GPU và thực sự không phải là một sự thay đổi cấu hình, mà đó chỉ là một phỏng đoán. Hoạt động của bạn có thay đổi cấu hình khi điều này được bật không?
CommonsWare

1
AFAIK, onConfigurationChanged()sẽ chỉ bị sa thải nếu bạn có android:configChangesthuộc tính phù hợp và từ chối hành vi thay đổi cấu hình mặc định. Hoạt động của bạn có bị phá hủy và được tạo lại sau khi chuyển đổi "đảo ngược màu" không?
CommonsWare

1
OK, vì vậy nó chắc chắn là một sự thay đổi cấu hình. Trừ khi có một số thông báo hệ thống trong Logcat, tôi không biết cách xác định loại cấu hình đó thay đổi và cách bạn sẽ từ chối thông qua nó android:configChanges. Nếu bạn đã thử tất cả những tài liệu được ghi lại mà không thành công, thì android:configChangesgiá trị đó không có giấy tờ hoặc không tồn tại (nghĩa là bạn không thể từ chối nó) ... và cả hai đều không phải là những lựa chọn tuyệt vời. :-(
CommonsWare

1
@CommonsWare Tôi sợ Android không có cờ cho sửa đổi đảo ngược màu. Tôi đã thử nghiệm với tất cả các cờ có sẵn trong tài liệu ( mnc|locale|touchscreen|keyboard|keyboardHidden|navigation|screenLayout|fontScale|uiMode|orientation|density|screenSize|smallestScreenSize) và không có cờ nào được onConfigurationChangedgọi lại = /. Dù sao, tôi muốn cảm ơn bạn rất nhiều vì sự quan tâm, thời gian và sẵn sàng giúp đỡ của bạn \ o /
Augusto Carmo

Câu trả lời:


1

Nếu bạn cần kiểm tra trạng thái của màu đảo ngược, tôi chỉ thấy hai giải pháp có thể.

Kiểm tra thủ công. Lấy từ câu hỏi này:
Nhận trạng thái bật / tắt và khả năng truy cập Chế độ đảo ngược màu

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
    }

Và bạn cũng có thể sử dụng AccessibilityService.
Khi đổi màu, tôi đã có một sự kiện như vậy:

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;

Vì vậy, tôi có thể kiểm tra trạng thái hiện tại bằng cách nào đó như thế này:

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

Tôi không chắc nó sẽ hoạt động cho mọi thiết bị.
Tôi chưa bao giờ làm điều đó trước đây, vì vậy có lẽ có một giải pháp tốt hơn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.