阅读三星和其他OEM的暗/夜模式系统设置

问题描述 投票:0回答:1

我继承了“ Theme.AppCompat.DayNight”主题,以在Android Q上自动支持暗模式,并在以前的版本中手动支持暗模式。在“设置”上,我让用户选择“打开”,“关闭”或“自动”,然后使用以下代码:

AppCompatDelegate.setDefaultNightMode(settings.darkMode())

其中settings.darkMode是:

        val darkValue =
            sharedPreferences.getString("PREF_DARK_THEME", null)
        return when (darkValue) {
            "ON" -> MODE_NIGHT_YES
            "OFF" -> MODE_NIGHT_NO
            else -> if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
                MODE_NIGHT_FOLLOW_SYSTEM
            } else {
                MODE_NIGHT_AUTO_BATTERY
            }
        }

但是我想添加对Samsung One UI的“ 夜间模式”的支持。是否可以读取该系统设置?我想做这样的事情:

            ...
            else -> if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
                MODE_NIGHT_FOLLOW_SYSTEM
            } else if("samsung"==Build.MANUFACTURER && isSamsungNightModeEnabled()) {
                MODE_NIGHT_YES
            } else ...[add other brands]...
            } else {
                MODE_NIGHT_AUTO_BATTERY
            }
android kotlin samsung-mobile
1个回答
0
投票

感谢Pawel's comment这就是我所做的。似乎工作正常。

    fun darkMode(sharedPreferences: SharedPreferences, context: Context): Int {
        val darkValue =
            sharedPreferences.getString("PREF_DARK_THEME", null)
        return when (darkValue) {
            "ON" -> MODE_NIGHT_YES
            "OFF" -> MODE_NIGHT_NO
            else -> if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
                MODE_NIGHT_FOLLOW_SYSTEM
            } else {
                val nightModeFlags =
                    context.resources.configuration.uiMode and Configuration.UI_MODE_NIGHT_MASK
                when (nightModeFlags) {
                    Configuration.UI_MODE_NIGHT_YES -> MODE_NIGHT_YES
                    Configuration.UI_MODE_NIGHT_NO -> MODE_NIGHT_NO
                    else -> MODE_NIGHT_AUTO_BATTERY
                }
            }
        }
    }

我从活动的onResume()方法调用AppCompatDelegate.setDefaultNightMode(darkMode(preferences, this)),并且在通知面板上修改设备的“夜间模式”后,应用程序会自动更改其主题。在注释9上测试。

© www.soinside.com 2019 - 2024. All rights reserved.