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

目录
  • 1.控制屏幕常亮
  • 2.动态调节亮度
    • Progress
    • brightness.setKeepScreenOn

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

参数名 类型 必填 说明
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%')
  }
}

参考资料

api官网

到此这篇关于OpenHarmony实现屏幕亮度动态调节方法详解的文章就介绍到这了,更多相关OpenHarmony屏幕亮度调节内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • OpenHarmony实现类Android短信验证码及倒计时流程详解

    目录 1.背景 2.效果预览 3.思路 4.创建应用 5.删除原有代码 6.编写代码实现功能 1.布局拆分 2.实现堆叠布局 3.实现文本展示 4.实现输入框 5.实现短信验证码按钮 6.定时器的实现 7.签名及真机调试 8.源码地址 9.总结 1.背景 倒计时的效果在网站或其他平台看到的很多了吧,今天就让我们来看看在OpenHarmony中如何实现它吧! 2.效果预览 视频效果演示 传送门 开发板:DAYU200 IDE:DevEco Studio 3.0 Release Build Vers

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

    目录 1.控制屏幕常亮 2.动态调节亮度 Progress brightness.setKeepScreenOn 1.控制屏幕常亮 首先导入模块 import brightness from '@system.brightness'; 接下来在项目中使用,首先新建一个项目 在默认生成的代码里,我们只需要添加生命周期函数onPageShow,并在里面添加 brightness.setKeepScreenOn({ //设置保持屏幕常亮 keepScreenOn: true, //接口调用成功的回调函

  • android 屏幕亮度调节方法详解

    屏幕亮度自动调节:主要是从Sensor分析之中分离出来分析LIGHT 光线感应器,因此就分析一下自动调节屏幕亮度(手机随着光线的强度自我调节,也就是在亮的光线下屏幕自动调亮一些,暗的时候就自动调暗一些,省得光线对眼睛有刺激)..... (本人从历经挫折才大概了解流程),现在就开始讲一下流程,如果有不对地方希望牛人指出来... 先从Sttings入手吧,在diaplay中有屏幕亮度调节,有一个进度调,上面有一个checkbox(自动调节屏幕亮度的),那么我们当然去找settings下的文件开始看了

  • iOS中屏幕亮度与闪光灯控制详解

    本文主要介绍的是关于iOS屏幕亮度与闪光灯控制的相关内容,分享出来供大家参考学习,下面来看看详细的介绍: 所用涉及框架:AVFoundation框架和ImageIO 读取屏幕亮度: [UIScreen mainScreen].brightness; 设置屏幕亮度: [[UIScreen mainScreen] setBrightness:0.5]; 获取环境亮度主要代码: - (void)getTorch { AVCaptureDevice *device = [AVCaptureDevice

  • Java中Arraylist动态扩容方法详解

    前言 本文主要给大家介绍了关于Java中Arraylist动态扩容的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. ArrayList 概述 ArrayList是基于数组实现的,是一个动态数组,其容量能自动增长.ArrayList不是线程安全的,只能用在单线程环境下.实现了Serializable接口,因此它支持序列化,能够通过序列化传输:实现了RandomAccess接口,支持快速随机访问,实际上就是通过下标序号进行快速访问:实现了Cloneable接口,能被克隆.

  • vuejs动态组件给子组件传递数据的方法详解

    通过子组件定义时候的props可以支持父组件给子组件传递数据,这些定义的props在子组件的标签中使用绑定属性即可,但是如果使用的是<component>动态组件,这个时候就没有显式的子组件标签,要给子组件传递数据需要在<component> 中进行绑定 <div class="app" id="deviceready"> <component :is="currentView" :user_name.s

  • IOS 静态方法与动态方法详解

    IOS 静态方法与动态方法详解 1.问题提出 iOS中有静态方法与动态方法,那么两种方法的异同是什么? 2.问题分析 因为每个对象都由相应的数据结构与方法相构成,一个程序可能有多个属于同一个类的对象,而每个对象的数据结构应该是不一的,但方法是相同的,若为每个对象开辟内存空间来存储方法,必然是对内存空间极大的浪费.因此apple是通过类对象与元类来解决这个问题的. 从根本来说,c++.objective-c.java都发源于c语言,因此这些语言实际上可以理解了经过封装的c语言,所以它们更加方便使用

  • C#动态对象(dynamic)详解(实现方法和属性的动态)

    C#的动态对象的属性实现比较简单,如果要实现动态语言那种动态方法就比较困难,因为对于dynamic对象,扩展方法,匿名方法都是不能用直接的,这里还是利用对象和委托来模拟这种动态方法的实现,看起来有点javascript的对象味道: 1) 定义一个委托,参数个数可变,参数都是object类型:这里的委托多有个dynamic参数,代表调用这个委托的动态对象本身. public delegate object MyDelegate(dynamic Sender, params object[] PMs

  • 对Vue table 动态表格td可编辑的方法详解

    项目中需求用到可编辑表格 下图这种 ↓ element UI 组件table表格中 增加template 模版 翻入input 根据业务逻辑增加全局变量 isEdit 是否变化. <el-table-column label="名称" width="140"> <template scope="scope"> <el-input v-if="scope.row.isEdit && scope

  • JavaScript实现生成动态表格和动态效果的方法详解

    今天上午完成了Vue实现一个表格的动态样式,那么JavaScript代码能不能实现同样的效果呢?这样也可以学习一下JavaScript的语法,晚上试了一下,完全可以,效果一模一样. <!DOCTYPE html> <html lang="en"> <head> <meta http-equiv="X-UA-Compatible" content="text/html; charset=utf-8">

  • Java为实体类动态添加属性的方法详解

    目录 添加依赖 代码 测试 可以给已有实体类动态的添加字段并返回新的实体对象,不影响原来的实体对象结构. 添加依赖 <dependency> <groupId>cglib</groupId> <artifactId>cglib</artifactId> <version>2.2.2</version> </dependency> <dependency> <groupId>commons

随机推荐