Android自动正确性立即生效

Android自动正确性立即生效,android,automation,android-sensors,brightness,Android,Automation,Android Sensors,Brightness,在Android中设置自动正确性很容易,不是吗 Settings.System.putInt(resolver, Settings.System.SCREEN_BRIGHTNESS_MODE, 0); // 0 is manual, 1 is auto 但如果您正在切换: boolean isAuto = Settings.System.getInt(resolver, Settings.System.SCREEN_BRIGHTNESS_MODE) == 1;

在Android中设置自动正确性很容易,不是吗

Settings.System.putInt(resolver,
        Settings.System.SCREEN_BRIGHTNESS_MODE, 0); // 0 is manual, 1 is auto
但如果您正在切换:

boolean isAuto = Settings.System.getInt(resolver, 
        Settings.System.SCREEN_BRIGHTNESS_MODE) == 1;
Settings.System.putInt(resolver,
        Settings.System.SCREEN_BRIGHTNESS_MODE, isAuto ? 0 : 1);

在您锁定屏幕并再次锁定它之前,它不会自动适应。

我不知道为什么,但在将其设置为1之前将其再次设置为0会起作用:

boolean isAuto = Settings.System.getInt(resolver, 
    Settings.System.SCREEN_BRIGHTNESS_MODE) == 1;
if (isAuto) {
    Settings.System.putInt(resolver,
        Settings.System.SCREEN_BRIGHTNESS_MODE, 0); // set to 0 again, even if it is already 0
    Settings.System.putInt(resolver,
        Settings.System.SCREEN_BRIGHTNESS_MODE, 1); // now it auto-adapts
} else {
    Settings.System.putInt(resolver,
         Settings.System.SCREEN_BRIGHTNESS_MODE, 0);
}

isAuto放进去怎么样?0:1在它自己的()中可能…?不太确定这是否会有区别。isAuto?0:1是一个三元(布尔)表达式,无论有没有括号,它都是完全相同的,但它更干净。我只是写得很快,因为这是一个我想分享的问题答案,因为它让我疯狂了好几个星期:-)好吧,我知道这个表达式,但我不确定()是否有不同。这看起来很奇怪,它不会像你在问题中那样工作……它实际上在设置菜单中设置了正确的设置,如果你监视它,你可以看到设置被更改了。但是,亮度不会立即调整,而是必须锁定和解锁屏幕才能生效。在自动之前再次将其置于手动,导致其直接应用(不太清楚原因)