【发布时间】:2012-03-07 17:52:23
【问题描述】:
您好,我尝试了网络上和 SO 中的所有解决方案,但没有任何效果。我有一个覆盖(服务),当您单击触发器时会弹出全屏。在覆盖层上,我放置了一些快捷方式、音量控制和亮度控制。关键是无论我做什么亮度都不会立即改变屏幕(我需要关闭和打开屏幕)。
这就是我在更新亮度滑块时所说的:
@Override
public void onProgressChanged(SeekBar arg0, int arg1, boolean arg2) {
int value = (int)(arg1*255.0/100);
int V=-1;
try {
V=android.provider.Settings.System.getInt(getContext().getContentResolver(), android.provider.Settings.System.SCREEN_BRIGHTNESS);
} catch (SettingNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("V="+V+"brightness="+value);
//android.provider.Settings.System.putInt(getContext().getContentResolver(), android.provider.Settings.System.SCREEN_BRIGHTNESS_MODE, android.provider.Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC);
android.provider.Settings.System.putInt(getContext().getContentResolver(), android.provider.Settings.System.SCREEN_BRIGHTNESS, value);
android.provider.Settings.System.putInt(getContext().getContentResolver(), android.provider.Settings.System.SCREEN_BRIGHTNESS_MODE, android.provider.Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL);
// Intent intent= new Intent(getContext(), Bright.class);
// Bundle b=new Bundle();
// b.putFloat("lvl", (float)(arg1*0.01));
// intent.putExtras(b);
// //intent.putExtra("lvl", (float)(arg1*0.01));
// intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
// getContext().startActivity(intent);
}
});
如果您关闭再打开屏幕,这将有效,但其他情况下则无效。由于该类是一个服务(没有可用的 getWindow()),我还尝试了生成一个调用代码的假 Activity 的技巧(也可以在网络上找到)
WindowManager.LayoutParams lp = getWindow().getAttributes();
lp.screenBrightness=0.9f;
getWindow().setAttributes(lp);
不幸的是,在我的情况下,上述解决方案似乎都不起作用。 WindowManager 似乎什么都不做。可能这是我的应用程序的实现方式(系统覆盖而不是“经典”窗口)
无论如何,当我在后台打开“设置”>“亮度”窗口时,我突然注意到滑块开始工作。这样滑块就可以通过设置两条线直接控制系统亮度
android.provider.Settings.System.putInt(getContext().getContentResolver(), android.provider.Settings.System.SCREEN_BRIGHTNESS, value); android.provider.Settings.System.putInt(getContext().getContentResolver(), android.provider.Settings.System.SCREEN_BRIGHTNESS_MODE, android.provider.Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL);
因此,这意味着当后台发生“某些过程”时,亮度的调节非常容易(因为它应该!)。任何人都可以帮助我尝试了解如何获得相同的效果吗?我可以简单地使用命令行启动亮度窗口(如果我知道如何),但我显然想要一个更微妙的解决方案。
请告诉我你的想法。
干杯
伊曼纽尔
【问题讨论】:
标签: android brightness