HarmonyOS 5.0.0 或以上:使用 vibrator 模块实现震动反馈功能(含权限处理)


📌 场景介绍

震动是提升用户交互反馈的重要方式,适用于:

  • 操作确认提示(如长按成功)

  • 错误提醒(如密码错误)

  • 游戏震动反馈

本篇将基于 @ohos.vibrator 模块实现震动功能,并说明必要的权限配置。


🧱 权限配置(config.json)

config.json 中添加如下权限声明:

"module": {
  ...
  "reqPermissions": [
    {
      "name": "ohos.permission.VIBRATE"
    }
  ]
}

🧱 页面结构

/entry/src/main/ets
  └── pages/
       └── VibratorDemo.ets     // 按钮震动反馈页面

🧩 VibratorDemo.ets 示例页面

import vibrator from '@ohos.vibrator'

@Entry
@Component
struct VibratorDemo {
  private async vibrateShort() {
    try {
      const vibratorInfo = await vibrator.getVibratorManager()
      vibratorInfo?.vibrate(100)  // 震动100ms
      console.info('短震动已触发')
    } catch (err) {
      console.error('震动失败:', JSON.stringify(err))
    }
  }

  private async vibratePattern() {
    try {
      const vibratorInfo = await vibrator.getVibratorManager()
      // 自定义震动模式:[震动200ms, 停顿100ms, 再震动300ms]
      vibratorInfo?.vibrate([200, 100, 300])
      console.info('模式震动已触发')
    } catch (err) {
      console.error('震动失败:', JSON.stringify(err))
    }
  }

  build() {
    Column() {
      Text("震动反馈演示").fontSize(22).margin(20)

      Button("短震动").onClick(() => this.vibrateShort()).margin(10)
      Button("震动模式").onClick(() => this.vibratePattern()).margin(10)
    }
    .padding(30)
    .height('100%')
    .alignItems(HorizontalAlign.Center)
    .justifyContent(FlexAlign.Center)
  }
}

✅ 效果说明

  • 点击“短震动”:手机震动 100ms

  • 点击“震动模式”:先震动 200ms,停 100ms,再震 300ms

  • 控制台可看到震动触发日志


🔧 拓展建议

  • 游戏中击打或命中目标时触发震动

  • 与音效、动画配合实现多模态反馈

  • 在低电量或勿扰模式下判断是否可震动(需扩展判断 API)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值