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

这篇具有很好参考价值的文章主要介绍了HarmonyOS学习路之开发篇—设备管理(控制类小器件)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

控制类小器件开发概述

基本概念

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

运作机制

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

图1 控制类小器件

HarmonyOS学习路之开发篇—设备管理(控制类小器件),HarmonyOS 学习,学习,harmonyos,java,振动器,指示灯,设备

 

  • 控制类小器件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的主要接口

接口名

描述

getLightIdList()

获取硬件设备上的灯列表。

isSupport(int)

根据指定灯Id查询硬件设备是否有该灯。

isEffectSupport(int, String)

查询指定的灯是否支持指定的闪烁效果。

turnOn(int, String)

对指定的灯创建指定效果的一次性闪烁。

turnOn(int, LightEffect)

对指定的灯创建自定义效果的一次性闪烁。

turnOn(String)

对指定的灯创建指定效果的一次性闪烁。

turnOn(LightEffect)

对指定的灯创建自定义效果的一次性闪烁。

turnOff(int)

关闭指定的灯。

turnOff()

关闭指定的灯。

开发步骤

  1. 查询硬件设备上灯的列表。
  2. 查询指定的灯是否支持指定的闪烁效果。
  3. 创建不同的闪烁效果。
  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的主要接口

接口名

描述

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)

关闭指定的振动器指定模式的振动。文章来源地址https://www.toymoban.com/news/detail-521971.html

stop(String)

关闭指定的振动器指定模式的振动。

开发步骤

  • 控制设备上的振动器,需要在“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);
}

到了这里,关于HarmonyOS学习路之开发篇—设备管理(控制类小器件)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • HarmonyOS学习路之方舟开发框架—学习ArkTS语言(状态管理 二)

    @Prop装饰的变量可以和父组件建立单向的同步关系。@Prop装饰的变量是可变的,但是变化不会同步回其父组件。 @Prop装饰的变量和父组件建立单向的同步关系: @Prop变量允许在本地修改,但修改后的变化不会同步回父组件。 当父组件中的数据源更改时,与之相关的@Prop装饰的变

    2024年02月14日
    浏览(48)
  • HarmonyOS学习路之开发篇—数据管理(轻量级数据存储)

    轻量级数据存储适用于对Key-Value结构的数据进行存取和持久化操作。应用获取某个轻量级存储对象后,该存储对象中的数据将会被缓存在内存中,以便应用获得更快的数据存取速度。应用也可以将缓存的数据再次写回文本文件中进行持久化存储,由于文件读写将产生不可避免

    2024年02月13日
    浏览(54)
  • HarmonyOS学习路之开发篇—数据管理(对象关系映射数据库)

    HarmonyOS对象关系映射(Object Relational Mapping,ORM)数据库是一款基于SQLite的数据库框架,屏蔽了底层SQLite数据库的SQL操作,针对实体和关系提供了增删改查等一系列的面向对象接口。应用开发者不必再去编写复杂的SQL语句, 以操作对象的形式来操作数据库,提升效率的同时也

    2024年02月13日
    浏览(43)
  • HarmonyOS学习路之开发篇—数据管理(关系型数据库)

    关系型数据库(Relational Database,RDB)是一种基于关系模型来管理数据的数据库。HarmonyOS关系型数据库基于SQLite组件提供了一套完整的对本地数据库进行管理的机制,对外提供了一系列的增、删、改、查等接口,也可以直接运行用户输入的SQL语句来满足复杂的场景需要。Harmo

    2024年02月13日
    浏览(47)
  • 开发基于 LoRaWAN 的设备--设备联网管理

    物联网 (IoT) 以及基于 LoRa® 的设备和 LoRaWAN® 网络使其成为可能,数十亿个传感器将改变我们与世界互动的方式。这些传感器将提供广泛的监控可能性,这在几年前还是不可想象的。各行业的数据分析师对农业、工业控制、医疗保健和计量等各个领域的数亿字节数据的可能性

    2024年02月15日
    浏览(46)
  • HarmonyOS学习路之开发篇—流转

    随着全场景多设备生活方式的不断深入,用户拥有的设备越来越多,每个设备都能在适合的场景下提供良好的体验,例如:手表可以提供及时的信息查看能力,电视可以带来沉浸的观影体验。但是,每个设备也有使用场景的局限,例如:在电视上输入文本相对手机来说是非常

    2024年02月15日
    浏览(45)
  • HarmonyOS学习路之开发篇—AI功能开发(分词)

    随着信息技术的发展,网络中的信息量成几何级增长逐步成为当今社会的主要特征。准确提取文本关键信息,是搜索引擎等领域的技术基础,而分词作为文本信息提取的第一步则尤为重要。 分词作为自然语言处理领域的基础研究,衍生出各类不同的文本处理相关应用。 分词

    2024年02月11日
    浏览(67)
  • 软件测试/测试开发/全日制/测试管理丨跨平台设备管理方案 Selenium Grid

    Selenium Grid是一个用于实现分布式测试的工具,允许在多个机器和多个浏览器上同时运行Selenium测试。它可以有效地管理和分发测试任务,支持跨平台和跨浏览器的测试。以下是关于Selenium Grid的一些关键特点和使用方案: 分布式测试:  Selenium Grid支持在不同的计算机和操作系

    2024年01月20日
    浏览(58)
  • HarmonyOS学习路之开发篇—AI功能开发(实体识别)

    实体识别能够从自然语言中提取出具有特定意义的实体,并在此基础上完成搜索等一系列相关操作及功能。 实体识别覆盖范围大,能够满足日常开发中对实体识别的需求,让应用体验更好。识别准确率高,能够准确地提取到实体信息,对应用基于信息的后续服务形成关键影响

    2024年02月11日
    浏览(107)
  • HarmonyOS学习路之开发篇—AI功能开发(语音播报)

    语音播报(Text to Speech,下文简称TTS),基于华为智慧引擎(HUAWEI HiAI Engine)中的语音播报引擎,向开发者提供人工智能应用层API。该技术提供将文本转换为语音并进行播报的能力。 支持超长文本播报,最大文本长度为100000个字符。 语音播报不支持多线程调用。 实时语音交

    2024年02月11日
    浏览(79)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包