HarmonyOS鸿蒙Next中@system.brightness (屏幕亮度) 不能使用,APP无法运行

HarmonyOS鸿蒙Next中@system.brightness (屏幕亮度) 不能使用,APP无法运行

使用了

import brightness, { BrightnessModeResponse, BrightnessResponse } from '@system.brightness'

获取和设置屏幕亮度,APP无法运行

3 回复

@system.brightness接口已经弃用,

可通过窗口获取和设置屏幕亮度

获取屏幕亮度:

let winProp = window.getWindowProperties()

let brightness = winProp.brightness

设置屏幕亮度:

import window from '@ohos.window';

import { BusinessError } from '@ohos.base';

import promptAction from '@ohos.promptAction';

@Entry
@Component
struct Index {
  @State currentScreenBrightness: number = 0;
  @State clickCount: number = 0;
  @State baseBrightness: number = 0.1;
  @State operation: string = 'increase';

  setScreenBrightness(brightness: number) {
    window.getLastWindow(getContext(this)).then(currentWindow => {
      currentWindow.setWindowBrightness(brightness, (err: BusinessError) => {
        const errCode: number = err.code;
        if (errCode) {
          console.error('Failed to set the brightness. Cause: ' + JSON.stringify(err));
          return;
        }
        console.info('Succeeded in setting the brightness.');
      });
    });
  }

  getScreenBrightness() {
    window.getLastWindow(getContext(this)).then(currentWindow => {
      let properties = currentWindow.getWindowProperties();
      this.currentScreenBrightness = properties.brightness;
      console.info(`properties:${JSON.stringify(properties)}`)
    });
  }

  build() {
    Column() {
      Text(`current screen brightness: ${this.currentScreenBrightness}`)
      Button(`click to ${this.operation} brightness`)
        .onClick(() => {
          if (this.operation === 'increase') {
            this.clickCount++;
            if (this.baseBrightness * this.clickCount <= 1.0) {
              this.setScreenBrightness(this.baseBrightness * this.clickCount);
            } else {
              promptAction.showToast({
                message: '亮度值已达到上限!'
              })
              this.operation = 'decrease';
            }
          } else if (this.operation === 'decrease') {
            this.clickCount--;
            if (this.baseBrightness * this.clickCount >= 0.0) {
              this.setScreenBrightness(this.baseBrightness * this.clickCount);
            } else {
              promptAction.showToast({
                message: '亮度值已达到下限!'
              })
              this.operation = 'increase';
            }
          }
        })
        .margin({
          top: 20,
          bottom: 20
        })
      Button('click to get brightness')
        .onClick(() => {
          this.getScreenBrightness();
        })
        .margin({
          bottom: 20
        })
    }
  }
}

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

可以参考下述demo:

更多关于HarmonyOS鸿蒙Next中@system.brightness (屏幕亮度) 不能使用,APP无法运行的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,如果@system.brightness模块无法使用,导致APP无法运行,可能是由于以下原因:

  1. 权限问题@system.brightness模块需要特定的系统权限才能使用。如果APP没有正确配置或获取相关权限,模块将无法正常工作。检查config.json文件中的权限配置,确保已声明ohos.permission.DISPLAY_BRIGHTNESS权限。

  2. API兼容性:鸿蒙Next版本可能对API进行了更新或改动,导致旧代码无法兼容。检查所使用的API是否在当前版本中仍然有效,并参考官方文档确认其使用方法。

  3. 系统限制:某些设备或系统版本可能限制了屏幕亮度的调节功能,特别是在低电量模式或特定场景下。确保设备支持屏幕亮度调节功能,并且未处于受限制状态。

  4. 代码错误:检查代码中是否存在语法错误或逻辑问题,特别是调用@system.brightness模块的部分。确保初始化、调用和释放的流程正确无误。

  5. 设备兼容性:某些设备可能不支持@system.brightness模块的全部功能。确认当前设备是否支持该模块,并检查设备规格说明。

  6. 系统服务异常:如果系统服务出现异常,可能影响@system.brightness模块的正常工作。重启设备或重新安装APP以排除系统服务问题。

检查以上问题,确保代码和配置正确,以便@system.brightness模块能够正常使用。

在HarmonyOS鸿蒙Next中,@system.brightness API 用于控制屏幕亮度。如果该API无法使用,可能导致依赖屏幕亮度调整的APP无法正常运行。建议检查以下原因:

  1. 权限问题:确保APP已申请并获取了ohos.permission.BRIGHTNESS权限。
  2. API兼容性:确认设备或系统版本是否支持该API,鸿蒙Next可能对API进行了调整或废弃。
  3. 代码逻辑:检查代码中是否存在错误调用或未正确处理API返回值的逻辑。
  4. 系统更新:确保系统和开发工具已更新至最新版本,避免已知问题。

若问题仍未解决,建议查阅官方文档或提交工单获取技术支持。

回到顶部