我正在搜索如何以编程方式更改屏幕亮度,结果发现 this这是一个非常好的解决方案,效果很好,但它仅在我的应用程序处于 Activity 状态时才有效。在我的应用程序关闭后,亮度将恢复为与我启动应用程序之前相同的值。
我希望能够像按下电源小部件中的亮度按钮一样更改亮度。在来自 android 的电源小部件中,有 3 种状态。一个很亮,一个很暗,一个介于两者之间。是否可以像按下这个小部件一样改变亮度?
编辑1: 我创建了这个并在 list 中添加了权限,但是当应用程序启动时,我看不到亮度有任何变化,我尝试了 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));
我的问题中的代码不起作用,因为屏幕没有刷新。因此,刷新屏幕的一个技巧是启动虚拟 Activity ,然后在创建该虚拟 Activity 以调用 finish()
以使亮度的变化生效。
关于android - 以编程方式更改屏幕亮度(与电源小部件一样),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7646865/