OpenHarmony实现屏幕亮度动态调节方法详解

作者:坚果的博客 时间:2022-01-13 18:24:08 

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。

type、style:设置进度条的样式, 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%')
 }
}

参考资料

api官网

来源:https://jianguo.blog.csdn.net/article/details/127106405

标签:OpenHarmony,屏幕,亮度,调节,控制
0
投稿

猜你喜欢

  • Java读写文件创建文件夹多种方法示例详解

    2022-11-17 01:08:48
  • Android显示网络图片实例

    2022-11-02 14:13:31
  • Java程序员应该遵守的10条纪律

    2022-07-16 22:47:41
  • WPF使用DrawingContext实现二维绘图

    2021-06-08 15:04:27
  • C#限速下载网络文件的方法实例

    2023-07-01 01:33:15
  • Android保持屏幕常亮唤醒状态的方法

    2021-05-30 15:15:29
  • Spring Cloud微服务架构Sentinel数据双向同步

    2021-07-16 04:17:04
  • Android自定义SwipeRefreshLayout高仿微信朋友圈下拉刷新

    2023-01-06 08:51:34
  • C语言中的数据整除判断问题

    2023-08-28 20:36:09
  • Java实现FTP批量大文件上传下载篇2

    2021-07-22 02:30:31
  • C++类与对象深入之构造函数与析构函数详解

    2021-06-29 13:44:44
  • Java遍历json字符串取值的实例

    2023-09-02 17:03:17
  • Java版微信公众号支付开发全过程

    2023-01-31 16:35:46
  • JavaCV实现照片马赛克效果

    2023-04-27 15:55:14
  • Java concurrency集合之ArrayBlockingQueue_动力节点Java学院整理

    2023-07-01 22:19:29
  • java并发编程中ReentrantLock可重入读写锁

    2021-12-10 16:06:17
  • C#调用Win32的API函数--User32.dll

    2022-04-13 16:43:24
  • SpringBoot整合Shiro框架,实现用户权限管理

    2021-10-27 00:03:02
  • C#装箱与拆箱操作的深入讲解

    2023-04-29 19:10:06
  • C#实现根据指定容器和控件名字获得控件的方法

    2023-09-26 12:23:03
  • asp之家 软件编程 m.aspxhome.com