一、简介

① 基本概念
  • 控制类小器件指的是设备上的 LED 灯和振动器。其中,LED 灯主要用作指示(如充电状态)、闪烁功能(如三色灯)等;振动器主要用于闹钟、开关机振动、来电振动等场景。
  • 控制类小器件主要包含以下四个模块:控制类小器件 API、控制类小器件Framework、控制类小器件 Service、HD_IDL 层。

  • 控制类小器件 API:提供灯和振动器基础的 API,主要包含灯的列表查询、打开灯、关闭灯等接口,振动器的列表查询、振动器的振动器效果查询、触发/关闭振动器等接口。
  • 控制类小器件 Framework:主要实现灯和振动器的框架层管理,实现与控制类小器件 Service 的通信。
  • 控制类小器件 Service:实现灯和振动器的服务管理。
  • HD_IDL 层:对不同设备的适配。
② 约束与限制
  • 在调用 Light API 时,请先通过 getLightIdList 接口查询设备所支持的灯的 ID 列表,以免调用打开接口异常。
  • 在调用 Vibrator API 时,请先通过 getVibratorIdList 接口查询设备所支持的振动器的ID列表,以免调用振动接口异常。
  • 在使用振动器时,开发者需要配置请求振动器的权限 ohos.permission.VIBRATE,才能控制振动器振动。

二、Light

① 应用场景
  • 当设备需要设置不同的闪烁效果时,可以调用 Light 模块,例如,LED 灯能够设置灯颜色、灯亮和灯灭时长的闪烁效果。
② Light 的 API
  • 灯模块主要提供的功能有:查询设备上灯的列表,查询某个灯设备支持的效果,打开和关闭灯设备。
  • LightAgent 类开放能力如下:
接口名 描述
getLightIdList() 获取硬件设备上的灯列表
isSupport(int) 根据指定灯Id查询硬件设备是否有该灯
isEffectSupport(int, String) 查询指定的灯是否支持指定的闪烁效果
turnOn(int, String) 对指定的灯创建指定效果的一次性闪烁
turnOn(int, LightEffect) 对指定的灯创建自定义效果的一次性闪烁
turnOn(String) 对指定的灯创建指定效果的一次性闪烁
turnOn(LightEffect) 对指定的灯创建自定义效果的一次性闪烁
turnOff(int) 关闭指定的灯
turnOff() 关闭指定的灯
③ Light 的使用
  • 查询硬件设备上灯的列表。
  • 查询指定的灯是否支持指定的闪烁效果。
  • 创建不同的闪烁效果。
  • 关闭指定的灯。
 private LightAgent lightAgent = new LightAgent();@Overridepublic void onStart(Intent intent) {super.onStart(intent);super.setUIContent(ResourceTable.Layout_light_layout);// ...// 查询硬件设备上的灯列表List<Integer> myLightList = lightAgent.getLightIdList();if (myLightList.isEmpty()) {return;}int lightId = myLightList.get(0);// 查询指定的灯是否支持指定的闪烁效果boolean isSupport = lightAgent.isEffectSupport(lightId, LightEffect.LIGHT_ID_KEYBOARD);// 创建指定效果的一次性闪烁boolean turnOnResult = lightAgent.turnOn(lightId, LightEffect.LIGHT_ID_KEYBOARD);// 创建自定义效果的一次性闪烁LightBrightness lightBrightness = new LightBrightness(255, 255, 255);LightEffect lightEffect = new LightEffect(lightBrightness, 1000, 1000);boolean turnOnEffectResult = lightAgent.turnOn(lightId, lightEffect);// 关闭指定的灯boolean turnOffResult = lightAgent.turnOff(lightId);}

三、Vibrator

① 应用场景
  • 当设备需要设置不同的振动效果时,可以调用 Vibrator 模块,例如,设备的按键可以设置不同强度和时长的振动,闹钟和来电可以设置不同强度和时长的单次或周期性振动。
② Vibrator 的 API
  • 振动器模块主要提供的功能有:查询设备上振动器的列表,查询某个振动器是否支持某种振动效果,触发和关闭振动器。
  • VibratorAgent类开放能力如下:
接口名 描述
getVibratorIdList() 获取硬件设备上的振动器列表
isSupport(int) 根据指定的振动器Id查询硬件设备是否存在该振动器
isEffectSupport(int, String) 查询指定的振动器是否支持指定的震动效果
startOnce(int, String) 对指定的振动器创建指定效果的一次性振动
startOnce​(String) 对指定的振动器创建指定效果的一次性振动
startOnce(int, int) 对指定的振动器创建指定振动时长的一次性振动
startOnce​(int) 对指定的振动器创建指定振动时长的一次性振动
start(String, boolean) 对指定的振动器以预设的某种振动效果进行循环振动
start(int, VibrationPattern) 对指定的振动器创建自定义效果的波形或一次性振动
start​(VibrationPattern) 对指定的振动器创建自定义效果的波形或一次性振动
stop(int, String) 关闭指定的振动器指定模式的振动
stop(String) 关闭指定的振动器指定模式的振动
③ Vibrator 的使用
  • 控制设备上的振动器,需要在“config.json”里面进行配置请求权限,具体如下:
 "reqPermissions": [{"name": "ohos.permission.VIBRATE","reason": "","usedScene": {"ability": [".MainAbility"],"when": "inuse"}}]
  • 查询硬件设备上的振动器列表。
  • 查询指定的振动器是否支持指定的震动效果。
  • 创建不同效果的振动。
  • 关闭指定的振动器指定模式的振动。
 private VibratorAgent vibratorAgent = new VibratorAgent();private int[] timing = {1000, 1000, 2000, 5000};private int[] intensity = {50, 100, 200, 255};@Overridepublic void onStart(Intent intent) {super.onStart(intent);super.setUIContent(ResourceTable.Layout_vibrator_layout);// ...// 查询硬件设备上的振动器列表List<Integer> vibratorList = vibratorAgent.getVibratorIdList();if (vibratorList.isEmpty()) {return;}int vibratorId = vibratorList.get(0);// 查询指定的振动器是否支持指定的振动效果boolean isSupport = vibratorAgent.isEffectSupport(vibratorId,VibrationPattern.VIBRATOR_TYPE_CAMERA_CLICK);// 创建指定效果的一次性振动boolean vibrateEffectResult = vibratorAgent.startOnce(vibratorId,VibrationPattern.VIBRATOR_TYPE_CAMERA_CLICK);// 创建指定振动时长的一次性振动int vibratorTiming = 1000;boolean vibrateResult = vibratorAgent.startOnce(vibratorId, vibratorTiming);// 以预设的某种振动效果进行循环振动boolean vibratorRepeatEffect = vibratorAgent.start(VibrationPattern.VIBRATOR_TYPE_RINGTONE_BOUNCE, true);// 控制振动器停止循环振动vibratorAgent.stop();// 创建自定义效果的周期性波形振动int count = 5;VibrationPattern vibrationPeriodEffect = VibrationPattern.createPeriod(timing, intensity, count);boolean vibratePeriodResult = vibratorAgent.start(vibratorId, vibrationPeriodEffect);// 创建自定义效果的一次性振动VibrationPattern vibrationOnceEffect = VibrationPattern.createSingle(3000, 50);boolean vibrateSingleResult = vibratorAgent.start(vibratorId, vibrationOnceEffect);// 关闭指定的振动器自定义模式的振动boolean stopResult = vibratorAgent.stop(vibratorId,VibratorAgent.VIBRATOR_STOP_MODE_CUSTOMIZED);}

HarmonyOS之LED灯和振动器Vibrator的功能和使用相关推荐

  1. USB小风扇驱动芯片FH511_NOWLED_B关闭LED灯显关闭自然风功能

    USB小风扇驱动芯片FH511_NOWLED_B关闭LED灯显关闭自然风功能 FH511是一款集成升压转换器.锂电池充电管理多功能电源管理SoC,为便携式风扇应用提供完整的解决方案. FH511采用线 ...

  2. 单片机软件常用设计分享(二)驱动设计之LED灯显示设计

    单片机软件常用设计分享(二)驱动设计之LED灯显示设计 前言 <驱动设计–LED灯显示驱动> 一.LED灯工作方式 1.常亮 2.常灭 3.闪烁 4.间歇性闪烁 二.LED灯驱动数据结构 ...

  3. 61-20210407华为海思Hi3516DV300的linux系统下控制GPIO口(标准linux模式点亮LED灯)

    61-20210407华为海思Hi3516DV300的linux系统下控制GPIO口(标准linux模式点亮LED灯) 2021/4/7 15:13 https://xueqiu.com/797071 ...

  4. [51单片机学习笔记ONE]-----LED灯的多种使用方法

    一.交替闪烁8个LED灯,时间间隔为1s 1 /****************************************************** 2 实验名称: 交替闪烁8个LED灯,时间 ...

  5. 和12岁小同志搞创客开发:手撕代码,点亮LED灯

    目录 1.Arduino编程架构 2.点亮LED灯 机缘巧合在网上认识一位12岁小同志,从零开始系统辅导其创客开发思维和技巧. 项目专栏:https://blog.csdn.net/m0_381069 ...

  6. FPGA(1)基础入门 -- 按键控制led灯

    目录 效果说明 1.配置输入输出变量 2.变量赋值 3.配置引脚(输入输出变量) 代码 效果说明 key1按键按下,led1被点亮. key2按键按下,led2被点亮. 1.配置输入输出变量 inpu ...

  7. led计数电路实验报告_「正点原子FPGA连载」第八章 按键控制LED灯实验

    1)实验平台:正点原子开拓者FPGA开发板 2)本实例源码下载:请移步正点原子官网 第八章 按键控制LED灯实验 按键是常用的一种控制器件.生活中我们可以见到各种形式的按键,由于其结构简单,成本低廉等 ...

  8. SW6206超级华为快充5V5A,全协议OPPO闪充、自带电量计量、LED 灯/数码管显示

    深圳市展嵘电子有限公司 有需要的上帝可联系小陈:136-6225-3950 : 3412-1522-98 SW6206 是一款高集成度的多协议双向快充移动电源专用多合一芯片,支持A+A+B+C+L 口 ...

  9. 台达asda-b2伺服驱动器说明书_REXROTH力士乐DKC系列伺服放大器LED灯都

    REXROTH力士乐DKC系列伺服放大器LED灯都不亮维修 伺服放大器的三种控制方式(1)转矩控制.通过外部模拟量的输入或直接的地址赋值来设定电动机轴对外的输出转矩的大小,主要应用于需要严格控制转矩的 ...

最新文章

  1. Node.js小白开路(一)-- fs篇
  2. 2021-04-24 人工智能必读书单 Python
  3. 用Broadcast广播在activity之间、fragment之间、activity和fragment之间相互传数据
  4. (转)Python开发规范
  5. 百余名欧洲议会议员发函 呼吁英国留在欧盟
  6. 新书《活用UML-需求分析高手》详细大纲(持续更新中)
  7. 探索C++的秘密之详解extern C
  8. Serval and Parenthesis Sequence CodeForces - 1153C 贪心
  9. php laravel 返回统一格式,封装的统一的Laravel响应类,返回数据类
  10. CrtmpServer 接收推送视频流 注册流基本流程
  11. 大型网站技术架构 读书笔记2 核心架构要素
  12. wps批量删除sheet 批量删除工作簿
  13. 信号理论: 信号集及其映射
  14. 注册表(安全 活动桌面)
  15. 数据分析EXCEL入门必备
  16. 程序员能纯靠技术渡过中年危机吗?
  17. 2022 QS世界大学排名发布!MIT霸榜,清北冲上全球前20
  18. Css_display: block inline inline-bock区别
  19. 笔记:《高效能人士的七个习惯》第七章 习惯四 双赢思维——人际领导的原则
  20. 2022 ouc 计算机网络exp1

热门文章

  1. ASP.NET Web Pages:Chart 帮助器
  2. winfrom保存图片,将文件夹中图片放入listview,与撤回操作
  3. 20162325金立清第三周作业
  4. STM32M CUBE实现printf打印调试信息以及实现单字节接收
  5. [转]Linux下使用dirname命令
  6. SQL 触发器的使用
  7. java io null异常_大量java.lang.InterruptedException: null异常,数据没有同步
  8. C语言函数题-P字符串的比较
  9. Java黑皮书课后题第2章:*2.21(金融应用:计算未来投资回报)编写程序,读取投资总额、年利率和年龄,显示未来投资回报金额
  10. 线性时间复杂度求数组中第K大数