当前位置: 首页 > news >正文

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%。

参数名类型必填说明
valuenumber屏幕亮度,值为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
}
参数名类型必填说明
keepScreenOnboolean是否保持屏幕常亮。
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%')
  }
}

参考资料

屏幕亮度

相关文章:

  • jenkins 2.346.1 从git拉取后自动构建部署springboot maven项目
  • vue搭建项目、创建登录页面和后台交互之引入axios
  • MySQL-存储过程-函数-触发器-游标
  • JVM入门教程
  • python毕业设计项目源码选题(20)教室图书馆座位预约系统毕业设计毕设作品开题报告开题答辩PPT
  • 拿走吧,你,可视化大屏一次性解决
  • 基于SpringBoot零食销售系统的设计与实现【Java毕业设计·安装调试·代码讲解·文档报告】
  • C++面向对象程序设计(第2版)第七章(输入输出流)知识点总结
  • MATLAB | 全网唯一,使用MATLAB绘制精致的环形树状图
  • Nuxt3 简单集成 GoogleMap
  • 历届蓝桥杯青少年编程选拔赛 科技素养题真题讲解 STEMA评测比赛真题解析【持续更新 已更新至18套】
  • 【Java面试宝典】线程安全问题|线程死锁的出现|线程安全的集合类
  • 【JAVA程序设计】基于SSH(非maven)便利店管理系统-有文档
  • mybatis-plus通用业务分页查询封装
  • 【毕业设计】 心血管疾病分析系统(医学大数据分析)
  • 《深入 React 技术栈》
  • CSS实用技巧
  • Electron入门介绍
  • Laravel Telescope:优雅的应用调试工具
  • LeetCode18.四数之和 JavaScript
  • Linux Process Manage
  • Node项目之评分系统(二)- 数据库设计
  • open-falcon 开发笔记(一):从零开始搭建虚拟服务器和监测环境
  • React-Native - 收藏集 - 掘金
  • 编写高质量JavaScript代码之并发
  • 给新手的新浪微博 SDK 集成教程【一】
  • 解决iview多表头动态更改列元素发生的错误
  • 开源中国专访:Chameleon原理首发,其它跨多端统一框架都是假的?
  • 扑朔迷离的属性和特性【彻底弄清】
  • 前端面试之CSS3新特性
  • 使用parted解决大于2T的磁盘分区
  • 使用前端开发工具包WijmoJS - 创建自定义DropDownTree控件(包含源代码)
  • 文本多行溢出显示...之最后一行不到行尾的解决
  • AI算硅基生命吗,为什么?
  • 好程序员web前端教程分享CSS不同元素margin的计算 ...
  • 京东物流联手山西图灵打造智能供应链,让阅读更有趣 ...
  • ​iOS安全加固方法及实现
  • !$boo在php中什么意思,php前戏
  • #Lua:Lua调用C++生成的DLL库
  • #QT(智能家居界面-界面切换)
  • #Z0458. 树的中心2
  • (+3)1.3敏捷宣言与敏捷过程的特点
  • (2)关于RabbitMq 的 Topic Exchange 主题交换机
  • (6)STL算法之转换
  • (zt)最盛行的警世狂言(爆笑)
  • (附源码)spring boot儿童教育管理系统 毕业设计 281442
  • (官网安装) 基于CentOS 7安装MangoDB和MangoDB Shell
  • (转)程序员疫苗:代码注入
  • (轉貼) 寄發紅帖基本原則(教育部禮儀司頒布) (雜項)
  • .bat批处理(九):替换带有等号=的字符串的子串
  • .NET 的程序集加载上下文
  • .NET和.COM和.CN域名区别
  • .Net中的集合
  • @Autowired和@Resource装配
  • @DependsOn:解析 Spring 中的依赖关系之艺术