uni-app 在华为手机上使用 uni.getScreenBrightness 获取到的亮度值永远都是0.49019608
uni-app 在华为手机上使用 uni.getScreenBrightness 获取到的亮度值永远都是0.49019608
操作步骤:
如题
预期结果:
如题
实际结果:
如题
bug描述:
使用uni.getScreenBrightness在华为手机上获取到的亮度值永远都是0.49019608,而直接使用plus.screen.getBrightness()获取的亮度是正确的。
| 信息类别 | 详细信息 |
|---|---|
| 产品分类 | uniapp/App |
| PC开发环境 | Windows |
| PC开发环境版本 | Windows 10专业版 |
| HBuilderX类型 | 正式 |
| HBuilderX版本 | 3.1.22 |
| 手机系统 | Android |
| 手机系统版本 | Android 10 |
| 手机厂商 | 华为 |
| 手机机型 | P40 |
| 页面类型 | vue |
| 打包方式 | 云端 |
| 项目创建方式 | HBuilderX |
更多关于uni-app 在华为手机上使用 uni.getScreenBrightness 获取到的亮度值永远都是0.49019608的实战教程也可以访问 https://www.itying.com/category-93-b0.html
1 回复
更多关于uni-app 在华为手机上使用 uni.getScreenBrightness 获取到的亮度值永远都是0.49019608的实战教程也可以访问 https://www.itying.com/category-93-b0.html
这是一个已知的兼容性问题,主要出现在部分华为/荣耀机型上。
问题原因:
uni.getScreenBrightness() 底层调用的是 Android 原生 API Settings.System.SCREEN_BRIGHTNESS,而华为系统对此做了定制化处理,在某些情况下返回的是固定值而非实际亮度值。plus.screen.getBrightness() 使用的是系统级 API,绕过了这个限制。
解决方案:
- 条件使用原生 API(推荐)
在华为设备上降级使用
plus.screen.getBrightness():// 判断平台 #ifdef APP-PLUS const isHarmonyOS = uni.getSystemInfoSync().platform === 'harmony' // 或通过设备品牌判断 if (isHarmonyOS || uni.getSystemInfoSync().brand === 'HONOR' || uni.getSystemInfoSync().brand === 'HUAWEI') { // 华为/荣耀设备使用 plus API brightness = plus.screen.getBrightness() } else { // 其他设备使用 uni API uni.getScreenBrightness({ success: (res) => { brightness = res.value } }) } #endif

