android – 以编程方式更改屏幕亮度(与功能小部件一样)

我正在搜索如何以编程方式改变屏幕的亮度,我发现this是非常好的解决方案,它的工作原理很好,但只有在我的应用程序活动时才有效。在我的应用程序关闭后,亮度返回与启动我的应用程序之前相同的值。

我想要能够改变亮度,就像当我从我的电源小部件按下亮度按钮时。在来自android的电源小部件有3个状态。一个非常明亮的一个非常黑暗,一个在之间。就像有人按下这个小部件一样,可以改变亮度吗?

编辑1:
我创建了这个,我添加了我的清单的权限,但是当应用程序启动时,我没有看到任何亮度的变化,我尝试了10与100,现在与200,但没有变化
有什么建议么 ?

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
android.provider.Settings.System.putInt(this.getContentResolver(),
        android.provider.Settings.System.SCREEN_BRIGHTNESS, 200);
}
最佳答案
这是我发现工作的完整代码:

Settings.System.putInt(this.getContentResolver(),
        Settings.System.SCREEN_BRIGHTNESS, 20);

WindowManager.LayoutParams lp = getWindow().getAttributes();
lp.screenBrightness =0.2f;// 100 / 100.0f;
getWindow().setAttributes(lp);

startActivity(new Intent(this,RefreshScreen.class));

我的问题的代码不起作用,因为屏幕没有被刷新。所以一个黑客刷新屏幕是开始虚拟活动,而不是创建这个虚拟活动来调用finish(),所以亮度的变化会生效。

转载注明原文:android – 以编程方式更改屏幕亮度(与功能小部件一样) - 代码日志