1# 振动开发指导
2
3
4## 场景介绍
5
6当设备需要振动固定时长时,可以调用Vibrator模块,例如:设备的按键可以设置不同时长的振动。
7
8详细的接口介绍请参考[Vibrator接口](../../reference/apis-sensor-service-kit/js-apis-vibrator.md)。
9
10
11## 接口说明
12
13| 名称                                                         | 描述                                                         |
14| ------------------------------------------------------------ | ------------------------------------------------------------ |
15| startVibration(effect: VibrateTime, attribute: VibrateAttribute): Promise<void> | 根据指定振动效果和振动属性触发马达振动,使用Promise异步回调。 |
16| startVibration(effect: VibrateTime, attribute: VibrateAttribute, callback: AsyncCallback<void>): void | 根据指定振动效果和振动属性触发马达振动,使用Callback异步回调。 |
17| stopVibration(): Promise<void>                         | 停止所有模式的马达振动,使用Promise异步回调。                |
18| stopVibration(callback: AsyncCallback<void>): void     | 停止所有模式的马达振动,使用Callback异步回调。               |
19
20
21## 开发步骤
22
231. 控制设备上的振动器,需要申请权限ohos.permission.VIBRATE。具体配置方式请参考[声明权限](../../security/AccessToken/declare-permissions.md)。
24
252. 根据指定振动时长和振动属性触发马达振动。
26
27    ```ts
28    import { vibrator } from '@kit.SensorServiceKit';
29    import { BusinessError } from '@kit.BasicServicesKit';
30
31    try {
32      // 触发马达振动
33      vibrator.startVibration({
34        type: 'time',
35        duration: 1000,
36      }, {
37        id: 0,
38        usage: 'alarm'
39      }, (error: BusinessError) => {
40        if (error) {
41          console.error(`Failed to start vibration. Code: ${error.code}, message: ${error.message}`);
42          return;
43        }
44        console.info('Succeed in starting vibration');
45      });
46    } catch (err) {
47      let e: BusinessError = err as BusinessError;
48      console.error(`An unexpected error occurred. Code: ${e.code}, message: ${e.message}`);
49    }
50    ```
51
523. 停止马达的振动。
53
54    ```ts
55    import { vibrator } from '@kit.SensorServiceKit';
56    import { BusinessError } from '@kit.BasicServicesKit';
57
58    try {
59      // 停止所有模式的马达振动
60      vibrator.stopVibration((error: BusinessError) => {
61        if (error) {
62          console.error(`Failed to stop vibration. Code: ${error.code}, message: ${error.message}`);
63          return;
64        }
65        console.info('Succeed in stopping vibration');
66      })
67    } catch (error) {
68      let e: BusinessError = error as BusinessError;
69      console.error(`An unexpected error occurred. Code: ${e.code}, message: ${e.message}`);
70    }
71    ```
72