vibrator-guidelines.md 3.8 KB
Newer Older
H
update  
HelloCrease 已提交
1 2 3 4 5 6
# Vibrator开发指导


## 场景介绍

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

8
详细的接口介绍请参考[Vibrator接口](../reference/apis/js-apis-vibrator.md)
H
update  
HelloCrease 已提交
9 10 11 12


## 接口说明

C
cff-gite 已提交
13 14 15 16 17 18
| 模块          | 接口名                                                       | 描述                                                         |
| ------------- | ------------------------------------------------------------ | ------------------------------------------------------------ |
| ohos.vibrator | startVibration(effect: VibrateEffect, attribute: VibrateAttribute): Promise<void> | 根据指定振动效果和振动属性触发马达振动,使用Promise异步回调。 |
| ohos.vibrator | startVibration(effect: VibrateEffect, attribute: VibrateAttribute, callback: AsyncCallback<void>): void | 根据指定振动效果和振动属性触发马达振动,使用Callback异步回调。 |
| ohos.vibrator | stopVibration(stopMode: VibratorStopMode): Promise<void> | 按照指定模式停止马达的振动。                                 |
| ohos.vibrator | stopVibration(stopMode: VibratorStopMode, callback: AsyncCallback<void>): void | 按照指定模式停止马达的振动。                                 |
H
update  
HelloCrease 已提交
19 20 21 22


## 开发步骤

H
h00514358 已提交
23
1. 控制设备上的振动器,需要申请权限ohos.permission.VIBRATE。具体配置方式请参考[权限申请声明](../security/accesstoken-guidelines.md)
H
update  
HelloCrease 已提交
24 25

2. 触发设备振动。
H
HelloCrease 已提交
26

C
cff-gite 已提交
27
   ```js
H
update  
HelloCrease 已提交
28
   import vibrator from "@ohos.vibrator"
29 30
   vibrator.vibrate(1000).then((error) => {
       if (error) { //调用失败,打印error.code和error.message
31
          console.log("Promise return failed.error.code " + error.code + "error.message " + error.message);  
32
       } else { //调用成功,设备开始振动
33
          console.log("Promise returned to indicate a successful vibration.")  
34
       }
H
update  
HelloCrease 已提交
35 36 37 38
   })
   ```

3. 停止设备振动。
H
HelloCrease 已提交
39

C
cff-gite 已提交
40
   ```js
H
update  
HelloCrease 已提交
41
   import vibrator from "@ohos.vibrator"
42 43
   vibrator.stop(vibrator.VibratorStopMode.VIBRATOR_STOP_MODE_PRESET).then((error) => {
      if (error) { //调用失败,打印error.code和error.message
44
          console.log("Promise return failed.error.code " + error.code + "error.message " + error.message);
45
      } else { //调用成功,设备停止振动
46
          console.log("Promise returned to indicate successful.");
47
      }
H
update  
HelloCrease 已提交
48 49
   })
   ```
Z
zengyawen 已提交
50

C
cff-gite 已提交
51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91
4. 根据指定振动效果和振动属性触发马达振动 。

   ```js
   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);
   }
   ```

5.  按照指定模式停止马达的振动。 

   ```js
   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);
   }
   ```

   

Z
zengyawen 已提交
92 93 94 95
## 相关实例

针对振动开发,有以下相关实例可供参考:

96
- [`Vibrator`:振动(ArkTS)(API8)](https://gitee.com/openharmony/applications_app_samples/tree/master/device/Vibrator)