获取和设置应用内屏幕亮度值

应用内获取和设置屏幕亮度值。例如:视频横屏播放时,通过slider组件调整屏幕亮度。

HarmonyOS
2024-05-26 12:34:18
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
薯条包装盒

使用的核心API

setWindowBrightness - 设置屏幕亮度值

WindowProperties - 获取屏幕亮度值

核心代码解释

获取当前窗口实例,调用setWindowBrightness接口来设置屏幕亮度值。获取WindowProperties,从中获取brightness属性值即为当前窗口的屏幕亮度值。

import window from '@ohos.window'; 
import { BusinessError } from '@ohos.base'; 
import promptAction from '@ohos.promptAction'; 
  
@Entry 
@Component 
struct Page10 { 
  @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 
        }) 
    } 
  } 
}

注明适配的版本信息

IDE:DevEco Studio 4.0.1.601

SDK:4.0.10.11

分享
微博
QQ
微信
回复
2024-05-27 16:17:28
相关问题
获取系统的屏幕亮度
304浏览 • 1回复 待解决
是否有获取当前屏幕亮度的API
2014浏览 • 1回复 待解决
HarmonyOS 如何设置屏幕亮度呢?
289浏览 • 1回复 待解决
如何在native层获取屏幕亮度
1762浏览 • 1回复 待解决
如何设置屏幕亮度有知道的吗?
1728浏览 • 1回复 待解决
如何设置背景色的饱和度亮度
327浏览 • 1回复 待解决
HarmonyOS如何设置应用跟随屏幕旋转?
243浏览 • 1回复 待解决
应用字体大小设置调整
176浏览 • 1回复 待解决
获取设备屏幕的宽度高度
467浏览 • 1回复 待解决
如何获取应用签名证书的hash
1710浏览 • 1回复 待解决
HarmonyOS如何获取对象所有的value
762浏览 • 1回复 待解决
Web组件如何获取设置UserAgent
2616浏览 • 1回复 待解决
Preferences获取不到
8852浏览 • 2回复 待解决