HarmonyOS鸿蒙Next应用怎么实现修改屏幕亮度?

HarmonyOS鸿蒙Next应用怎么实现修改屏幕亮度? 我使用 settings.setValue(context, settings.display.SCREEN_BRIGHTNESS_STATUS, value) 可以读取到屏幕亮度,返回值是80,然后再使用 settings.setValue(context, settings.display.SCREEN_BRIGHTNESS_STATUS, '255') 来尝试设置屏幕亮度,返回的结果是true,但屏幕亮度并未改变。有什么方法可以修改屏幕亮度呢?

4 回复

可以尝试使用brightness.setWindowBrightness来设置屏幕亮度

  1. 屏幕亮度值。该参数为浮点数,取值范围为[0.0, 1.0]或-1.0。1.0表示最亮,-1.0表示默认亮度。

  2. 当前屏幕亮度规格:窗口设置屏幕亮度生效时,控制中心不可以调整系统屏幕亮度,窗口恢复默认系统亮度之后,控制中心可以调整系统屏幕亮度。

参考文档:
https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-window-V5#setwindowbrightness9

  1. 自定义屏幕亮度完成后,将屏幕亮度值调整为-1(默认值)
let windowClass = windowStage.getMainWindowSync()

let brightness: number = 1;
try {
  windowClass.setWindowBrightness(brightness, (err) => {
    if (err.code) {
      console.error('Failed to set the brightness. Cause: ' + JSON.stringify(err));
      return;
    }
    console.info('Succeeded in setting the brightness.');
  });
} catch (exception) {
  console.error('Failed to set the brightness. Cause: ' + JSON.stringify(exception));
}

更多关于HarmonyOS鸿蒙Next应用怎么实现修改屏幕亮度?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


/**

  • 设置屏幕亮度值,使用Promise异步回调。
  • @param brightness 屏幕亮度值。该参数为浮点数,取值范围为[0.0, 1.0]或-1.0。1.0表示最亮,-1.0表示默认亮度。
  • @returns */ static async setWindowBrightness(brightness: number, windowClass?: window.Window): Promise<void> { try { if (!windowClass) { windowClass = AppUtil.getMainWindow(); } return windowClass.setWindowBrightness(brightness); } catch (err) { BoncLog.error(TAG, JSON.stringify(err)); return; } }

核心是windowClass.setWindowBrightness(亮度)方法

在HarmonyOS鸿蒙Next中,修改屏幕亮度可以通过@ohos.brightness模块实现。首先,导入brightness模块:

import brightness from '@ohos.brightness';

然后,使用brightness.setValue方法设置屏幕亮度值,亮度值范围为0到255。例如,将亮度设置为100:

brightness.setValue(100).then(() => {
    console.log('亮度设置成功');
}).catch((err) => {
    console.error('亮度设置失败:', err);
});

如果需要获取当前亮度值,可以使用brightness.getValue方法:

brightness.getValue().then((value) => {
    console.log('当前亮度值:', value);
}).catch((err) => {
    console.error('获取亮度值失败:', err);
});

这些方法直接操作设备的屏幕亮度,适用于需要动态调整亮度的场景。

在HarmonyOS Next应用中,可以通过Window类的setBrightness方法来修改屏幕亮度。首先,获取当前窗口实例,然后调用setBrightness方法并传入亮度值(范围0.0到1.0)。示例代码如下:

Window window = getWindow();
WindowManager.LayoutParams layoutParams = window.getAttributes();
layoutParams.screenBrightness = 0.5f; // 设置亮度为50%
window.setAttributes(layoutParams);

确保在AndroidManifest.xml中添加CHANGE_CONFIGURATION权限。

回到顶部