【发布时间】:2012-03-09 12:18:21
【问题描述】:
我只是想打开和关闭自动亮度。 我从这段代码开始(在 onCreate 方法中)
final ToggleButton autoBrightToggle = (ToggleButton) findViewById(R.id.brightToggle);
// display auto brightness state
final ToggleButton autoBrightToggle = (ToggleButton) findViewById(R.id.autoToggle);
autoOnOrOff.setText(String.valueOf(getAutoBrightnessMode()));
autoBrightToggle.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
if (autoBrightToggle.isChecked()) {
setAutoBright(true);
} else {
setAutoBright(false);
}
}
}); // end anonymous OnClickListener function
// toggle the brightness mode
private void setAutoBright(boolean mode) {
if (mode) {
Settings.System.putInt(cr, SCREEN_BRIGHTNESS_MODE, SCREEN_BRIGHTNESS_MODE_AUTOMATIC);
autoOnOrOff.setText(String.valueOf(getAutoBrightnessMode()));
} else {
Settings.System.putInt(cr, SCREEN_BRIGHTNESS_MODE, SCREEN_BRIGHTNESS_MODE_MANUAL);
autoOnOrOff.setText(String.valueOf(getAutoBrightnessMode()));
}
}
这似乎不起作用。 setAutoBrightnessMode() 方法也会在 onResume() 中再次调用,但结果相同。 无论如何,如果有人觉得这个问题是多余的,我很抱歉,但其他帖子没有让我到达我需要去的地方!
(FWIW - 我正在我的旧 Droid X 和 Galaxy Nexus 上进行测试,而不是模拟器)
已编辑 - 更新: 我现在有 99% 的把握,我没有看到设置面板和桌面小部件中反映的自动亮度模式有任何变化 - 即使我实际上可能正在改变它的价值。 部分问题是我不知道如何准确地确定自动亮度是否开启!
例如,屏幕变化是否迅速而明显?我一直期待根据环境的亮度立即可见的变化 - 但也许这些变化是微妙的?并在更长的时间内?或者在亮度变化之前可能需要 30 秒或更长时间的环境变化?
有人可以建议我如何跟踪这个吗?我尝试查询 Settings.System.SCREEN_BRIGHTNESS_MODE 常量 - 将此方法连接到文本字段:
private int getAutoBrightnessMode() {
try {
int brightnessMode = Settings.System.getInt(cr, SCREEN_BRIGHTNESS_MODE);
} catch (Settings.SettingNotFoundException e) {
e.printStackTrace();
int brightnessMode = -10000;
}
return brightnessMode;
}
但它总是读取 0,即使在 onResume() 之后也是如此。 :-((
我知道这是一个简单的过程,但我正在尝试自己学习这些东西,并且几乎没有接受过正式的 CS 培训......所以我只能说我对此感到非常沮丧并感到就像我已经把自己逼到了一个角落,在这一点上我很生气,我无法再思考了。
所以帮助会很棒。
【问题讨论】:
-
什么都没有??我希望这很简单!
-
我猜你也必须在 android manifest 中授予适当的权限(例如
android.permission.WRITE_SETTINGS)。 -
谢谢 - 我确实做到了。应该提到这一点。