HarmonyOS振动效果开发指导

Vibrator开发概述

振动器模块服务最大化开放硬工最新马达器件能力,通过拓展原生马达服务实现振动与交互融合设计,打造细腻精致的一体化振动体验和差异化体验,提升用户交互效率和易用性、提升用户体验、增强品牌竞争力。

运作机制

Vibrator属于控制类小器件,主要包含以下四个模块:Vibrator API,Vibrator Framework,Vibrator Service和HDF层。

图1 控制类小器件中的Vibrator

● Vibrator API:提供振动器基础的API,主要包含振动器的列表查询,振动器的振动器效果查询,触发/关闭振动器等接口。

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

● Vibrator Service:实现控制器的服务管理。

● HDF层:适配不同设备。

约束与限制

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

Vibrator开发指导

场景介绍

当设备需要设置不同的振动效果时,可以调用Vibrator模块,例如:设备的按键可以设置不同强度和不同时长的振动,闹钟和来电可以设置不同强度和时长的单次或周期振动。

详细的接口介绍请参考Vibrator接口

接口说明

模块 接口名 描述
ohos.vibrator startVibration(effect: VibrateEffect, attribute: VibrateAttribute): Promise 根据指定振动效果和振动属性触发马达振动,使用Promise异步回调。
ohos.vibrator startVibration(effect: VibrateEffect, attribute: VibrateAttribute, callback: AsyncCallback): void 根据指定振动效果和振动属性触发马达振动,使用Callback异步回调。
ohos.vibrator stopVibration(stopMode: VibratorStopMode): Promise 按照指定模式停止马达的振动。
ohos.vibrator stopVibration(stopMode: VibratorStopMode, callback: AsyncCallback): void 按照指定模式停止马达的振动。

开发步骤

  1. 控制设备上的振动器,需要申请权限ohos.permission.VIBRATE。具体配置方式请参考权限申请声明

  2. 根据指定振动效果和振动属性触发马达振动。

javascript 复制代码
import vibrator from '@ohos.vibrator';
try {
    vibrator.startVibration({
        type: 'time',
        duration: 1000,
    }, {
        id: 0,
        usage: 'alarm'
    }, (error) => {
        if (error) {
            console.error('vibrate fail, error.code: ' + error.code + 'error.message: ', + error.message);
            return;
        }
        console.log('Callback returned to indicate a successful vibration.');
    });
} catch (err) {
    console.error('errCode: ' + err.code + ' ,msg: ' + err.message);
}
  1. 按照指定模式停止马达的振动。
javascript 复制代码
import vibrator from '@ohos.vibrator';
try {
  // 按照VIBRATOR_STOP_MODE_TIME模式停止振动
  vibrator.stopVibration(vibrator.VibratorStopMode.VIBRATOR_STOP_MODE_TIME, function (error) {
      if (error) {
          console.log('error.code' + error.code + 'error.message' + error.message);
          return;
      }
      console.log('Callback returned to indicate successful.');
  })
} catch (err) {
  console.info('errCode: ' + err.code + ' ,msg: ' + err.message);
}
相关推荐
m0_749690236 小时前
【寻迹校园 HarmonyOS NEXT 实战 16】Preferences 还是 RelationalStore:HarmonyOS 本地存储选型实战
华为·harmonyos·arkts·preferences·relationalstore
2501_919749039 小时前
华为鸿蒙免费听歌APP—小羊免费听歌
华为·harmonyos·鸿蒙
OH_TPC10 小时前
HarmonyOS APP开发---"祝福圈"节日贺卡App,需要用到这个库
harmonyos
m0_7496902312 小时前
【寻迹校园 HarmonyOS NEXT 实战 31】举报去重怎么做:同一记录的重复投诉不应制造多条处理中案件
harmonyos·arkts·relationalstore·内容治理·举报去重
贾伟康13 小时前
【中国方言题库|11】HarmonyOS ArkTS 学习统计实战:计算地区学习进度与收藏数量
harmonyos·arkts·arkui·数据统计·多设备适配
用户12695508791413 小时前
RK3588 + OpenHarmony 6.1 RKNN2 NPU 验证指南
harmonyos
m0_7496902314 小时前
【寻迹校园 HarmonyOS NEXT 实战 35】先写全页面 Design Spec 再写 ArkUI:一个比赛项目的设计稿门禁实践
harmonyos·响应式设计·设计规范·arkui·ui设计
Magic-ZYJ15 小时前
HarmonyOS 日记类 App 的日期设计:本地自然日、月历与夏令时边界
华为·harmonyos·arkts·arkui·问题排查·移动端开发·独立开发者
贾伟康15 小时前
【中国方言题库|12】HarmonyOS ArkTS 题库列表组件实战:减少多地区页面重复并保证点击反馈
harmonyos·arkts·arkui·组件化·多设备适配