HarmonyOS学习路之开发篇—设备管理(控制类小器件)

简介: 控制类小器件指的是设备上的LED灯和振动器。其中,LED灯主要用作指示(如充电状态)、闪烁功能(如三色灯)等;振动器主要用于闹钟、开关机振动、来电振动等场景。

控制类小器件开发概述

基本概念

控制类小器件指的是设备上的LED灯和振动器。其中,LED灯主要用作指示(如充电状态)、闪烁功能(如三色灯)等;振动器主要用于闹钟、开关机振动、来电振动等场景。


运作机制

控制类小器件主要包含以下四个模块:控制类小器件API、控制类小器件Framework、控制类小器件Service、HD_IDL层。


图1 控制类小器件

控制类小器件API:提供灯和振动器基础的API,主要包含灯的列表查询、打开灯、关闭灯等接口,振动器的列表查询、振动器的振动器效果查询、触发/关闭振动器等接口。

控制类小器件Framework:主要实现灯和振动器的框架层管理,实现与控制类小器件Service的通信。

控制类小器件Service:实现灯和振动器的服务管理。

HD_IDL层:对不同设备的适配。

约束与限制

在调用Light API时,请先通过getLightIdList接口查询设备所支持的灯的ID列表,以免调用打开接口异常。

在调用Vibrator API时,请先通过getVibratorIdList接口查询设备所支持的振动器的ID列表,以免调用振动接口异常。

在使用振动器时,开发者需要配置请求振动器的权限ohos.permission.VIBRATE,才能控制振动器振动。

Light开发

场景介绍

当设备需要设置不同的闪烁效果时,可以调用Light模块,例如,LED灯能够设置灯颜色、灯亮和灯灭时长的闪烁效果。


说明


使用该功能依赖于硬件设备是否具有LED灯。


接口说明

灯模块主要提供的功能有:查询设备上灯的列表,查询某个灯设备支持的效果,打开和关闭灯设备。LightAgent类开放能力如下,具体请查阅API参考文档。


表1 LightAgent的主要接口

image.png

开发步骤

  1. 1.查询硬件设备上灯的列表。
  2. 2.查询指定的灯是否支持指定的闪烁效果。
  3. 3.创建不同的闪烁效果。
  4. 4.关闭指定的灯。
private LightAgent lightAgent = new LightAgent();
@Override
public 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模块,例如,设备的按键可以设置不同强度和时长的振动,闹钟和来电可以设置不同强度和时长的单次或周期性振动。


接口说明

振动器模块主要提供的功能有:查询设备上振动器的列表,查询某个振动器是否支持某种振动效果,触发和关闭振动器。VibratorAgent类开放能力如下,具体请查阅API参考文档。


表1 VibratorAgent的主要接口

image.png

开发步骤

控制设备上的振动器,需要在“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};
@Override
public 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);
}
相关文章
|
30天前
|
存储 前端开发 IDE
【华为鸿蒙系统学习】- 如何利用鸿蒙系统进行App项目开发|自学篇
【华为鸿蒙系统学习】- 如何利用鸿蒙系统进行App项目开发|自学篇
46 0
|
30天前
|
数据管理 API 调度
【华为鸿蒙系统学习】- HarmonyOS4.0开发|自学篇
【华为鸿蒙系统学习】- HarmonyOS4.0开发|自学篇
64 0
|
1月前
|
前端开发 JavaScript 开发者
鸿蒙2.0!用 JavaScript 开发鸿蒙应用
鸿蒙2.0!用 JavaScript 开发鸿蒙应用
|
1月前
|
开发者 索引 容器
【鸿蒙软件开发】Stage模型开发概述应用/组件级配置
【鸿蒙软件开发】Stage模型开发概述应用/组件级配置
【鸿蒙软件开发】Stage模型开发概述应用/组件级配置
|
1月前
|
人工智能 安全 开发者
中国移动APP启动鸿蒙原生应用开发,鸿蒙生态迎来通信领域民生应用
近日,在“鸿蒙生态全面合作签约暨开发启动仪式“上,中国移动通信有限公司在线营销服务中心宣布将与鸿蒙生态在技术互补、成果共享、商业共赢等方向进行合作,以共同推动鸿蒙智能化的移动开放生态业务发展,并正式启动中国移动APP鸿蒙原生应用及元服务开发。
|
3月前
|
安全 前端开发 Android开发
鸿蒙开发|鸿蒙系统的介绍(为什么要学习鸿蒙开发|鸿蒙系统的官方定义|鸿蒙和安卓、ios的对比)
鸿蒙开发学习是一项探索性的工作,旨在开发一个全场景分布式操作系统,覆盖所有设备,让消费者能够更方便、更直观地使用各种设备。
216 0
鸿蒙开发|鸿蒙系统的介绍(为什么要学习鸿蒙开发|鸿蒙系统的官方定义|鸿蒙和安卓、ios的对比)
|
3月前
|
文字识别 数据管理 API
双十一钜惠!三门不可多得的HarmonyOS学习教程
今年双十一,各大商城优惠不断。这里介绍三门不可多得的HarmonyOS学习教程,都有非常大的折扣优惠。
55 0
|
3月前
|
存储 前端开发 JavaScript
HarmonyOS UI 开发
HarmonyOS 提供了强大的 UI 开发工具和组件,使开发者能够创建吸引人的用户界面。本章将详细介绍在 HarmonyOS 中应用 JS、CSS、HTML,HarmonyOS 的 UI 组件以及如何自定义 UI 组件。
51 0
HarmonyOS UI 开发
|
6月前
|
IDE JavaScript API
HarmonyOS开发第一步,熟知开发工具DevEco Studio
本文主要以常见的功能点作为概述希望可以帮助到学习HarmonyOS的开发者。
164 0
|
6月前
|
缓存 API 开发者
HarmonyOS学习路之开发篇——Service Ability
基于Service模板的Ability(以下简称“Service”)主要用于后台运行任务(如执行音乐播放、文件下载等),但不提供用户交互界面。Service可由其他应用或Ability启动,即使用户切换到其他应用,Service仍将在后台继续运行。

相关产品

  • 云迁移中心