立即注册
查看: 361|回复: 0

[鸿蒙OS技术分享] HarmonyOS设备管理开发:控制类小器件开发概述及Light开发指导

已绑定手机
发表于 2021-12-22 14:45:05 | 显示全部楼层 |阅读模式 来自 广东省深圳市
一、控制类小器件开发概述
1、基本概念
控制类小器件指的是设备上的LED灯和振动器。其中,LED灯主要用作指示(如充电状态)、闪烁功能(如三色灯)等;振动器主要用于闹钟、开关机振动、来电振动等场景。

2、运作机制
控制类小器件主要包含以下四个模块:控制类小器件API、控制类小器件Framework、控制类小器件Service、HD_IDL层。
1.jpg
控制类小器件API:提供灯和振动器基础的API,主要包含灯的列表查询、打开灯、关闭灯等接口,振动器的列表查询、振动器的振动器效果查询、触发/关闭振动器等接口。
控制类小器件Framework:主要实现灯和振动器的框架层管理,实现与控制类小器件Service的通信。
控制类小器件Service:实现灯和振动器的服务管理。
HD_IDL层:对不同设备的适配。

3、约束与限制
在调用Light API时,请先通过getLightIdList接口查询设备所支持的灯的ID列表,以免调用打开接口异常。
在调用Vibrator API时,请先通过getVibratorIdList接口查询设备所支持的振动器的ID列表,以免调用振动接口异常。
在使用振动器时,开发者需要配置请求振动器的权限ohos.permission.VIBRATE,才能控制振动器振动。

二、Light开发指导
1、场景介绍
当设备需要设置不同的闪烁效果时,可以调用Light模块,例如,LED灯能够设置灯颜色、灯亮和灯灭时长的闪烁效果。
说明:使用该功能依赖于硬件设备是否具有LED灯。

2、接口说明
灯模块主要提供的功能有:查询设备上灯的列表,查询某个灯设备支持的效果,打开和关闭灯设备。LightAgent类开放能力如下,具体请查阅API参考文档。
表1 LightAgent的主要接口
接口名描述
getLightIdList()获取硬件设备上的灯列表。
isSupport(int)根据指定灯Id查询硬件设备是否有该灯。
isEffectSupport(int, String)查询指定的灯是否支持指定的闪烁效果。
turnOn(int, String)对指定的灯创建指定效果的一次性闪烁。
turnOn(int, LightEffect)对指定的灯创建自定义效果的一次性闪烁。
turnOn(String)对指定的灯创建指定效果的一次性闪烁。
turnOn(LightEffect)对指定的灯创建自定义效果的一次性闪烁。
turnOff(int)关闭指定的灯。
turnOff()关闭指定的灯。


3、开发步骤
查询硬件设备上灯的列表。
查询指定的灯是否支持指定的闪烁效果。
创建不同的闪烁效果。
关闭指定的灯。
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);
}
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

合作/建议

TEL: 19168984579

工作时间:
周一到周五 9:00-11:30 13:30-19:30
  • 扫一扫关注公众号
  • 扫一扫打开小程序
Copyright © 2013-2024 一牛网 版权所有 All Rights Reserved. 帮助中心|隐私声明|联系我们|手机版|粤ICP备13053961号|营业执照|EDI证
在本版发帖搜索
扫一扫添加微信客服
QQ客服返回顶部
快速回复 返回顶部 返回列表