android - 无法在 Android 中以编程方式应用系统屏幕亮度

标签 android settings system brightness

我正在使用以下设置系统自动亮度模式和级别:

    android.provider.Settings.System.putInt(y.getContentResolver(),Settings.System.SCREEN_BRIGHTNESS_MODE, 0);
    android.provider.Settings.System.putInt(y.getContentResolver(),Settings.System.SCREEN_BRIGHTNESS, y.brightness1);

我可以打开和关闭自动亮度,并设置不同的级别。这些设置似乎应用正确——我可以进入设置——> 显示——> 亮度,我设置的任何设置实际上都正确显示。然而,实际屏幕并没有改变它的亮度。如果我只是点击显示设置中的 slider ,那么所有内容都会应用。

我应该提到我正在运行一个带有主要 Activity 的应用程序,并且这些设置正在 BroadcastReceiver 中应用。我确实尝试创建一个虚拟 Activity 并在那里测试了这些东西,但得到了相同的结果。

最佳答案

好的,在这里找到了答案: Refreshing the display from a widget?

基本上,必须制作一个处理亮度变化的透明 Activity 。帖子中没有提到的是你必须做的:

Settings.System.putInt(y.getContentResolver(),Settings.System.SCREEN_BRIGHTNESS_MODE, 0);
Settings.System.putInt(y.getContentResolver(),Settings.System.SCREEN_BRIGHTNESS, brightnessLevel); 

然后做

WindowManager.LayoutParams lp = getWindow().getAttributes();
    lp.screenBrightness = brightness; 
    getWindow().setAttributes(lp);

如果您在应用更改后立即调用 finish(),亮度实际上永远不会改变,因为必须在应用亮度设置之前创建布局。所以我最终创建了一个有 300 毫秒延迟的线程,然后调用 finish()。

关于android - 无法在 Android 中以编程方式应用系统屏幕亮度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5032588/

相关文章:

android - Google Android 控制台的每日设备安装量和每日用户安装量有何区别?

android - 通过安卓应用改变屏幕亮度

java - 近距离的物体看起来被拉伸(stretch)/改变消失点?

google-chrome - Chrome 扩展程序可以更改 Chrome 设置(在新窗口/弹出窗口中打开)吗?

android - 在布局检查器中默认关闭实时更新

logging - 我的 Mac OSX 系统日志中的这些 SDActivityAdvertiser 进程是什么

android 缺少什么来显示我的弹出窗口

sql - 使用 SELECT 语句查询自定义 postgresql 参数

ruby - 获取系统调用的错误输出?

c++ - 如何使用引号将参数传递给系统函数?