OpenHarmony如何控制屏幕亮度

简介: OpenHarmony如何控制屏幕亮度

OpenHarmony如何控制屏幕亮度

大家在拿到dayu之后,都吐槽说,会经常熄屏,不利于调试,那么有没有一种办法,可以让app不熄屏呢,答案是有的,今天我们就来揭秘一下,如何控制屏幕亮度

1.控制屏幕常亮

首先导入模块

import brightness from '@system.brightness';

接下来在项目中使用,首先新建一个项目

在默认生成的代码里,我们只需要添加生命周期函数onPageShow,并在里面添加

 brightness.setKeepScreenOn({
      //设置保持屏幕常亮
      keepScreenOn: true,
      //接口调用成功的回调函数。
      success: function () {
        console.log('设置成功')
      },
      //接口调用失败的回调函数。
      fail: function (data, code) {
        console.log('设置失败 错误码code:' + code + ', data: ' + data);
      },
    });

就可以实现。

以下是完整代码:

/*
 * Copyright (c) 2022 JianGuo Device Co., Ltd.
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *    http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * @ProjectName : AbilityDemo
 * @FileName : brightness
 * @Author : 坚果
 * @Time : 2022/9/29 9:36
 * @Description : 屏幕亮度设置
 */
import router from '@ohos.router';
import brightness from '@system.brightness';
@Entry
@Component
struct brightnessSample {
  @State message: string = '亮度调节'
  @State progressValue: number = 0;
  onPageShow(){
    brightness.setKeepScreenOn({
      //设置保持屏幕常亮
      keepScreenOn: true,
      //接口调用成功的回调函数。
      success: function () {
        console.log('设置成功')
      },
      //接口调用失败的回调函数。
      fail: function (data, code) {
        console.log('设置失败 错误码code:' + code + ', data: ' + data);
      },
    });
  }

  build() {
    Row() {
      Column() {
        Text(this.message)
          .fontSize(20)
          .fontWeight(FontWeight.Bold).onClick(() => {
          router.back()
        })
      
      }
      .width('100%')
    }
    .height('100%')
  }
}

完成了屏幕常亮的功能,接下来,我们再结合进度条组件实现一个动态调节亮度的小功能,

2.动态调节亮度

需要有两个前置知识

Progress

Progress 组件可以精确的设置当前进度条的进度,它主要用在有加载进度的场景。

Progress定义介绍

interface ProgressInterface {
  (options: ProgressOptions): ProgressAttribute;
}

declare interface ProgressOptions {
  value: number; // 必须要指定初始进度
  total?: number;
  style?: ProgressStyle
  type?: ProgressType
}

参数说明:

  • value:表示当前进度,取值范围[0, 100],当超过 100 时无效。
  • total:表示进度条总进度,默认值为100。
  • typestyle:设置进度条的样式, style 从 API 8 起使用 type 代替, ProgressType 定义了以下 种样式:

    • Linear:进度条样式为条形进度条。
    • Eclipse:进度条样式为圆形进度条。
    • Ring:环形进度条。
    • ScaleRing:环形刻度进度条。
    • Capsule:胶囊样式进度条。

接口参数中的进度总长total,默认值100符合进度条的绝大部分使用场景,如果有需要,可以设置为其它正整数的值,最终进度条的完成度取决于value/total的结果,如,将total赋值100,value赋值68,最终结果就是68/100,也就是68%。

参数名 类型 必填 说明
value number 屏幕亮度,值为1-255之间的整数。 - 如果值小于等于0,系统按1处理。 - 如果值大于255,系统按255处理。 - 如果值为小数,系统将处理为整数。例如设置为8.1,系统按8处理。
success () => void 接口调用成功的回调函数。
fail (data: string, code: number) => void 接口调用失败的回调函数。
complete () => void 接口调用结束的回调函数。

首先设置设备当前的屏幕亮度值。设置brightness.setValue

brightness.setKeepScreenOn

setKeepScreenOn(Object): void

设置屏幕是否保持常亮状态。

static setKeepScreenOn(options?: SetKeepScreenOnOptions): void;

接下来先看定义介绍

export interface SetKeepScreenOnOptions {
    /**
     * Whether to always keep the screen on.
     */
    keepScreenOn: boolean;

    /**
     * Called when the setting is successful.
     */
    success?: () => void;

    /**
     * Called when the setting fails.
     */
    fail?: (data: string, code: number) => void;

    /**
     * Called when the execution is completed.
     */
    complete?: () => void
}
参数名 类型 必填 说明
keepScreenOn boolean 是否保持屏幕常亮。
success () => void 接口调用成功的回调函数。
fail (data: string, code: number) => void 接口调用失败的回调函数。
complete () => void 接口调用结束的回调函数。

以下是完整源码

import router from '@ohos.router';
import brightness from '@system.brightness';
@Entry
@Component
struct brightnessSample {
  @State message: string = '亮度调节'
  @State progressValue: number = 0;
aboutToAppear(){

  setInterval(()=>{
    if(this.progressValue < 100){
      this.progressValue += 5
    }
    brightness.setValue({
      value: this.progressValue *2.5,
      success: function(){
        console.log('handling set brightness success.');
      },
      fail: function(data, code){
        console.log('handling set brightness value fail, code:' + code + ', data: ' + data);
      },
    });
  },500)
  }
  build() {
    Row() {
      Column() {
        Text(this.message)
          .fontSize(20)
          .fontWeight(FontWeight.Bold).onClick(() => {
          router.back()
        })
        Progress({
          value: this.progressValue,           // 设置当前进度
          total: 100,                  // 设置进度总量
          type: ProgressType.Linear
        })
          .style({strokeWidth: 18})      // 设置进度条线宽
          .size({width: '100%', height: 40})
      }
      .width('100%')
    }
    .height('100%')
  }
}

参考资料

[屏幕亮度](

相关文章
|
存储 分布式计算 Hadoop
Docker-13:Docker安装Hbase
Docker环境中安装配置Hbase,并且初始化本地环境访问Hbase
2695 0
Docker-13:Docker安装Hbase
|
11月前
|
人工智能 编解码 芯片
告别低效沟通|让技术提问不再头疼-这套高效AI提问模板来帮你
不会向ai提问,不知道怎么提问的 可以看看
21182 1
告别低效沟通|让技术提问不再头疼-这套高效AI提问模板来帮你
|
11月前
|
人工智能 前端开发 API
如何快速开发视频下载器
本文介绍如何基于开源工具yt-dlp开发功能全面的视频下载器网站。yt-dlp作为youtube-dl的增强版,支持1000+网站,具备高效下载、格式选择及字幕处理等特性。文章详细解析了前后端架构设计,包括简洁的前端界面与基于Flask/Django的后端API实现,封装yt-dlp核心功能,提供进度跟踪和文件管理。同时探讨容器化部署、性能优化及扩展功能(如字幕翻译、批量下载)。案例“AI易视频”展示了AI辅助开发的高效性。开发时需遵守法律,尊重版权。
1314 11
|
编译器 Go
揭秘 Go 语言中空结构体的强大用法
Go 语言中的空结构体 `struct{}` 不包含任何字段,不占用内存空间。它在实际编程中有多种典型用法:1) 结合 map 实现集合(set)类型;2) 与 channel 搭配用于信号通知;3) 申请超大容量的 Slice 和 Array 以节省内存;4) 作为接口实现时明确表示不关注值。此外,需要注意的是,空结构体作为字段时可能会因内存对齐原因占用额外空间。建议将空结构体放在外层结构体的第一个字段以优化内存使用。
|
10月前
|
开发者
Uniapp开发鸿蒙应用教程之自定义导航栏
本文介绍了在Uniapp跨平台开发鸿蒙应用时,如何实现自定义导航栏。通过修改pages.json文件可调整默认导航栏样式,但若需添加组件(如搜索框、按钮等),则需手动创建自定义导航栏组件,以适配鸿蒙系统。文中给出了详细的配置代码与实现步骤,帮助开发者灵活控制界面布局。#鸿蒙 #Uniapp #跨平台开发
鸿蒙开发:单一手势实现长按事件
虽然说我们可以通过onTouch来实现一个长按事件,但是如果想要实现连续,多指那么就比较麻烦,远远没有LongPressGesture实现起来简单,所以在实际的开发中,大家还是以LongPressGesture为主。
233 1
鸿蒙开发:单一手势实现长按事件
|
关系型数据库 MySQL Linux
Linux(CentOS7)搭建LAMP服务环境
本文介绍了在Linux (CentOS 7) 上搭建LAMP服务环境的详细步骤,包括安装Apache HTTPd、解决编译时依赖问题、配置Apache服务、安装PHP以及处理PHP与Apache集成时遇到的问题。同时,还涉及了防火墙设置和SELinux权限调整,确保Web服务能够正常运行。
400 2
|
机器学习/深度学习 PyTorch 算法框架/工具
|
弹性计算 运维 监控
ecs监控与评估
阿里云ECS提供全面的监控与评估解决方案,包括云监控服务(实时资源指标、告警)、ECS实例详情页(运行状态查看)、资源负载评估(综合性能得分)、ECS Insight(多维度分析)、报警配置、流量管理优化(负载均衡、CDN)。这些工具帮助用户有效管理资源、识别潜在风险、优化性能,确保云服务稳定高效。
365 1
|
新零售 供应链 算法
数智熵减:焕发敏捷组织新活力
数智熵减:焕发敏捷组织新活力
703 0