HarmonyOS 鸿蒙Next应用亮度获取第一次值错误,为-1
HarmonyOS 鸿蒙Next应用亮度获取第一次值错误,为-1 this.windowClass = await window.getLastWindow(getContext(this)) this.oriBrightness = this.windowClass.getWindowProperties().brightness 这个亮度,自己没有设置之前,获取到是-1,系统明明有亮度值的,这块不正确,我看了一下文档,说跟随系统亮度值获取不是这个方法,那是哪个方法呢?
import { promptAction, router, window } from '@kit.ArkUI';
import settings from '@ohos.settings';
import { BusinessError } from '@ohos.base';
@Entry
@Component
export struct Index {
@State windowClass: window.Window | undefined = undefined;
/** 获取跟随系统的亮度数值 */
getLightWithoutSetting() {
let context = this;
let value = settings.getValueSync(context, settings.display.SCREEN_BRIGHTNESS_STATUS, '10');
console.log(`当前屏幕的亮度为: ${JSON.stringify(value)}`);
}
/** 只有设置窗口亮度后再获取,亮度信息才不会是-1 */
getLight() {
let brightness: number = 0.78;
let windowStage: window.WindowStage | undefined = AppStorage.get('windowStage') as window.WindowStage
windowStage.getMainWindow((err: BusinessError, data) => {
const errCode: number = err.code;
if (errCode) {
console.error('Failed to obtain the main window. Cause: ' + JSON.stringify(err));
return;
}
this.windowClass = data;
this.windowClass.setWindowBrightness(brightness, (err: BusinessError) => {
const errCode: number = err.code;
if (errCode) {
console.error('Failed to set the brightness. Cause: ' + JSON.stringify(err));
return;
}
let screenLight = this.windowClass?.getWindowProperties().brightness
console.info('Succeeded in setting the brightness.');
console.info(`Succeeded in getting the light:${screenLight}`);
});
});
}
build() {
Column({ space: 10 }) {
Button('获取亮度').onClick(() => {
this.getLightWithoutSetting()
})
Button('点击设置并获取亮度').onClick(() => {
this.getLight()
})
}.width('100%').height("100%").justifyContent(FlexAlign.Center)
}
}
运行上述代码前需替换EntryAbility.ets文件中的onWindowStageCreate方法,替换代码如下:
onWindowStageCreate(windowStage: window.WindowStage): void {
hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onWindowStageCreate');
windowStage.loadContent('pages/Index', (err) => {
AppStorage.setOrCreate('windowStage', windowStage)
if (err.code) {
hilog.error(0x0000, 'testTag', 'Failed to load the content. Cause: %{public}s', JSON.stringify(err) ?? '');
return;
}
hilog.info(0x0000, 'testTag', 'Succeeded in loading the content.');
}
);
}
更多关于HarmonyOS 鸿蒙Next应用亮度获取第一次值错误,为-1的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
针对帖子标题“HarmonyOS 鸿蒙Next应用亮度获取第一次值错误,为-1”的问题,以下是专业回答:
在HarmonyOS系统中,如果应用在首次获取屏幕亮度时返回值为-1,这通常意味着在尝试读取亮度值时遇到了某种错误或异常状态。可能的原因包括但不限于:
-
权限问题:确保应用已正确申请并获得了访问屏幕亮度设置的权限。
-
系统状态:在某些系统状态下(如启动过程中、权限被临时收回等),可能无法立即获取到正确的亮度值。
-
API使用不当:检查代码中用于获取屏幕亮度的API调用是否正确,包括参数设置和调用时机。
-
系统Bug:极少数情况下,可能是HarmonyOS系统本身的Bug导致的问题。
解决这类问题,可以尝试以下方法(但根据要求,这里不提供具体建议,仅说明一般思路):
- 确认权限申请和授权状态。
- 检查API调用方式和参数设置。
- 尝试在不同的系统状态或时间点获取亮度值。
- 查阅最新的HarmonyOS开发文档和社区讨论,看是否有其他开发者遇到并解决了类似问题。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html,