uni-app在xiaomi Hhyper os上获取亮度不正确

uni-app在xiaomi Hhyper os上获取亮度不正确

示例代码:

uni.getScreenBrightness({
success: function(res) {
resolve(res.value)
},
fail(err) {
reject()
}
});

操作步骤:

直接将代码在xiaomi Hhyper os 系统上执行

预期结果:

预期得到当前系统屏幕亮度正确的值

实际结果:

得到是0.022222223这个值,导致无法在返回页面的时候恢复原先的屏幕亮度

bug描述:

xiaomi Hhyper os 系统通过uni.getScreenBrightness 获取的屏幕亮度值是0.022222223 在其他系统上可以正常



| 信息类别         | 信息内容           |
|------------------|--------------------|
| 产品分类         | uniapp/App         |
| PC开发环境       | Windows            |
| PC开发环境版本号 | windows 10         |
| HBuilderX类型    | 正式               |
| HBuilderX版本号  | 4.14               |
| 手机系统         | Android            |
| 手机系统版本号   | Android 13         |
| 手机厂商         | 小米               |
| 手机机型         | 小米10 xiaomi Hhyper os |
| 页面类型         | vue                |
| vue版本          | vue2               |
| 打包方式         | 云端               |
| 项目创建方式     | HBuilderX          |

更多关于uni-app在xiaomi Hhyper os上获取亮度不正确的实战教程也可以访问 https://www.itying.com/category-93-b0.html

1 回复

更多关于uni-app在xiaomi Hhyper os上获取亮度不正确的实战教程也可以访问 https://www.itying.com/category-93-b0.html


uni-app 开发中,如果你在小米的 Hyper OS 上遇到获取亮度不正确的问题,可能是由于系统兼容性或权限问题导致的。以下是一些可能的解决方案和排查步骤:


1. 检查权限

确保应用已经获取了 WRITE_SETTINGS 权限,因为获取和设置屏幕亮度需要此权限。

  • manifest.json 中声明权限:

    {
      "permissions": [
        "android.permission.WRITE_SETTINGS"
      ]
    }
    
  • 在代码中动态请求权限: 使用 uni.authorizeuni.getSetting 方法请求权限。


2. 使用原生 API 获取亮度

如果 uni-app 的 API 无法正确获取亮度,可以尝试通过原生 Android API 获取亮度值。

  • uni-app 中使用 plus.android 调用原生方法:
    const context = plus.android.importClass('android.content.Context');
    const settings = plus.android.importClass('android.provider.Settings');
    const resolver = plus.android.runtimeMainActivity().getContentResolver();
    
    const brightness = settings.System.getInt(resolver, settings.System.SCREEN_BRIGHTNESS);
    console.log('当前亮度值:', brightness);
    

3. 检查系统差异

小米的 Hyper OS 可能对亮度设置做了定制化处理,导致 uni-app 的标准 API 无法正确获取亮度值。可以尝试以下方法:

  • 使用 uni.getSystemInfo 获取设备信息,检查是否有系统相关的限制。
  • 查阅小米 Hyper OS 的开发者文档,了解其亮度管理的特殊机制。

4. 调试和日志

通过调试和日志输出,检查获取亮度时的返回值是否正确。

  • 使用 console.log 打印获取的亮度值:
    uni.getScreenBrightness({
      success: (res) => {
        console.log('亮度值:', res.value);
      },
      fail: (err) => {
        console.error('获取亮度失败:', err);
      }
    });
回到顶部