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