#HarmonyOS NEXT体验官#震动器应用 原创

早起睡不够
发布于 2024-7-27 17:36
浏览
0收藏

震动器应用

vibrator模块提供控制马达振动启、停的能力。

功能

  1. 振动反馈体验优化:根据不同的应用场景,如游戏、导航、阅读等,提供定制化的振动反馈模式,增强用户交互体验。

  2. 运动监测:通过感知手机的振动和移动,监测用户的运动状态,例如步行、跑步、骑行等,并记录相关数据,如步数、运动距离、运动速度等。

  3. 姿态识别:判断手机的持握姿态和方向变化,从而自动调整应用的显示模式,比如横竖屏切换、界面布局调整等。

  4. 提醒功能:根据设定的条件,如特定时间、到达特定地点等,通过独特的振动模式进行提醒。

  5. 安全防护:当手机检测到异常的振动或移动模式,例如可能的掉落、被盗等情况,发出警报或通知用户。

  6. 触感交互:在一些操作中,通过不同强度和频率的振动,替代或补充视觉和听觉的反馈,例如在图片浏览中,不同的图片区域给予不同的振动效果。

导入模块

import { vibrator } from '@kit.SensorServiceKit';

vibrator.startVibration

startVibration(effect: VibrateEffect, attribute: VibrateAttribute, callback: AsyncCallback<void>): void

根据指定的振动效果和振动属性触发马达振动。使用callback异步回调。

需要权限: ohos.permission.VIBRATE

元服务API: 从API Version 11开始,该接口支持在元服务中使用。

系统能力: SystemCapability.Sensors.MiscDevice

参数:

参数名 类型 必填 说明
effect VibrateEffect 马达振动效果,支持三种:1、VibrateTime:按照指定持续时间触发马达振动;2、VibratePreset:按照预置振动效果触发马达振动;3、VibrateFromFile:按照自定义振动配置文件触发马达振动。
attribute VibrateAttribute 马达振动属性。
callback AsyncCallback<void> 回调函数,当马达振动成功,err为undefined,否则为错误对象。

错误码:

以下错误码的详细介绍请参见振动错误码

完整代码

import { vibrator } from '@kit.SensorServiceKit';
import { BusinessError } from '@kit.BasicServicesKit';

@Entry
@Component
struct VibratorPage {
  @State message: string = 'Hello World';

  build() {
    Column() {
      Button("持续时间震动").onClick(() => {
        try {
          vibrator.startVibration({
            type: 'time',
            duration: 1000
          }, {
            id: 0,
            usage: 'alarm'
          }).then(() => {
            console.info('Succeed in starting vibration');
          }, (error: BusinessError) => {
            console.error(`Failed to start vibration. Code: ${error.code}, message: ${error.message}`);
          });
        } catch (err) {
          let e: BusinessError = err as BusinessError;
          console.error(`An unexpected error occurred. Code: ${e.code}, message: ${e.message}`);
        }

      })
      Button("预置振动").onClick(() => {

        try {
          vibrator.startVibration({
            type: 'preset',
            effectId: 'haptic.clock.timer',
            count: 1,
          }, {
            id: 0,
            usage: 'alarm'
          }).then(() => {
            console.info('Succeed in starting vibration');
          }, (error: BusinessError) => {
            console.error(`Failed to start vibration. Code: ${error.code}, message: ${error.message}`);
          });
        } catch (err) {
          let e: BusinessError = err as BusinessError;
          console.error(`An unexpected error occurred. Code: ${e.code}, message: ${e.message}`);
        }
      })
      Button("停止").onClick(() => {
        try {
          // 停止任何形式的马达振动
          vibrator.stopVibrationSync()
          console.info('Succeed in stopping vibration');
        } catch (error) {
          let e: BusinessError = error as BusinessError;
          console.error(`An unexpected error occurred. Code: ${e.code}, message: ${e.message}`);
        }

      })
    }
    .height('100%')
    .width('100%')
  }
}

所以,是不是很简单呢,快做一个自己的应用吧

参考

https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-vibrator-V5

++下划线++

©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
标签
已于2024-7-27 17:41:00修改
收藏
回复
举报
回复
    相关推荐