苏觉s 2023-08-10 22:11 采纳率: 0%
浏览 6

安卓系统调节亮度,在部分应用页面上不会刷新设置后的亮度

调用系统服务的api调节亮度,调节后通知桌面apk刷新页面用的invalidate方法,部分应用会随设置的系统亮度变化而改变,有的就不会,需要点击页面上的按钮或者back键刷新屏幕亮度。

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-08-11 08:06
    关注

    【以下回答由 GPT 生成】

    对于这个问题,要在所有应用中实现自动刷新页面亮度功能是比较困难的。这是因为每个应用都有自己的界面绘制逻辑,而且有些应用的界面可能是通过OpenGL或其他底层图形库绘制的,无法直接通过invalidate方法来刷新。

    在Android中,调节系统亮度一般是通过修改系统设置来实现的,而不是针对每个应用进行修改。因此,调节系统亮度后,只有那些有监听系统亮度变化的应用才会自动刷新页面亮度。而对于那些没有监听系统亮度变化的应用,你只能通过手动点击页面上的按钮或返回键来刷新屏幕亮度。

    如果你想在你的应用中实现自动刷新页面亮度的功能,你可以尝试以下方法:

    1. 在你的应用中,使用ContentResolver注册一个ContentObserver来监听系统亮度变化。具体代码如下:
    ContentResolver contentResolver = getContentResolver();
    Uri brightnessUri = Settings.System.getUriFor(Settings.System.SCREEN_BRIGHTNESS);
    contentResolver.registerContentObserver(brightnessUri, true, new ContentObserver(new Handler()) {
        @Override
        public void onChange(boolean selfChange) {
            // 在这里处理系统亮度变化后的逻辑
            // 可以通过getSystemBrightness方法获取当前系统亮度值
        }
    });
    
    1. 在onChange方法中,你可以根据系统亮度的变化来手动调用invalidate方法刷新页面亮度。具体代码如下:
    View view = findViewById(R.id.your_view);
    view.invalidate();
    

    请注意,这种方法仅针对你的应用有效,无法保证在其他所有应用中都能实现自动刷新页面亮度的功能。

    如果你尝试过以上方法仍然无法实现自动刷新页面亮度的功能,那么很遗憾,这可能是由于其他应用的限制或者设计导致的,你无法通过代码来解决。在这种情况下,你可以考虑与相关应用的开发者沟通,了解他们的设计理念和实现方式,看是否有其他解决方案可供选择。

    再次强调,要在所有应用中实现自动刷新页面亮度的功能是比较困难的,而且可能有一定的限制。我希望以上方法可以帮助你解决问题,如果还有其他问题,请随时提问。


    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 创建了问题 8月10日

悬赏问题

  • ¥100 速求!商品购买力最优化问题(用遗传算法求解,给出python代码)
  • ¥15 虚拟机检测,可以是封装好的DLL,可付费
  • ¥15 kafka无法正常启动(只启动了一瞬间会然后挂了)
  • ¥30 使用matlab将观测点聚合成多条目标轨迹
  • ¥15 Workbench中材料库无法更新,如何解决?
  • ¥20 如何推断此服务器配置
  • ¥15 关于github的项目怎么在pycharm上面运行
  • ¥15 内存地址视频流转RTMP
  • ¥100 有偿,谁有移远的EC200S固件和最新的Qflsh工具。
  • ¥15 有没有整苹果智能分拣线上图像数据