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

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

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

使用的核心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
相关问题
是否有获取当前屏幕亮度的API
774浏览 • 1回复 待解决
如何在native层获取屏幕亮度
528浏览 • 1回复 待解决
如何设置屏幕亮度有知道的吗?
661浏览 • 1回复 待解决
如何获取应用签名证书的hash
611浏览 • 1回复 待解决
Preferences获取不到
7426浏览 • 2回复 待解决
如何获取手机屏幕信息
237浏览 • 1回复 待解决
如何获取系统屏幕固定。
2207浏览 • 0回复 待解决
如何获取屏幕相关配置
353浏览 • 1回复 待解决
设置飞行模式,屏幕找图
2850浏览 • 1回复 待解决
header类型的问题有懂的吗?
710浏览 • 1回复 待解决
Web组件如何获取设置UserAgent
915浏览 • 1回复 待解决
如何获取profile的文件
382浏览 • 1回复 待解决
如何设置屏幕方向为横屏
413浏览 • 1回复 待解决
怎么获取select选中的
6028浏览 • 1回复 待解决
如何实现应用屏幕自动旋转
704浏览 • 1回复 待解决
如何动态设置组件属性的
330浏览 • 1回复 待解决
鸿蒙响应屏幕触摸事件如何获取
6106浏览 • 1回复 已解决