js-apis-vibrator.md 12.5 KB
Newer Older
Z
zengyawen 已提交
1
# 振动
Z
zengyawen 已提交
2

C
cff-gite 已提交
3 4
vibrator模块提供控制马达振动的能力,如通过接口控制马达启动马达振动,停止马达振动等。

H
HelloCrease 已提交
5 6
> **说明:**
>
Z
zengyawen 已提交
7
> 本模块首批接口从API version 8开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
Z
zengyawen 已提交
8

Z
zengyawen 已提交
9 10

## 导入模块
Z
zengyawen 已提交
11

H
HelloCrease 已提交
12
```js
13
import vibrator from '@ohos.vibrator';
Z
zengyawen 已提交
14 15
```

16
## vibrator.vibrate
Z
zengyawen 已提交
17 18 19

vibrate(duration: number): Promise<void>

Z
zengyawen 已提交
20 21
按照指定持续时间触发马达振动。

W
wuzhihuitmac 已提交
22
**需要权限**:ohos.permission.VIBRATE,该权限为系统权限
C
cff-gite 已提交
23 24 25

**系统能力**:SystemCapability.Sensors.MiscDevice

H
HelloCrease 已提交
26
**参数:** 
W
wuzhihuitmac 已提交
27

W
wuzhihuitmac 已提交
28 29 30
| 参数名   | 类型   | 必填 | 说明                   |
| -------- | ------ | ---- | ---------------------- |
| duration | number | 是   | 马达振动时长, 单位ms。 |
Z
zengyawen 已提交
31

H
HelloCrease 已提交
32
**返回值:** 
W
wuzhihuitmac 已提交
33

W
wuzhihuitmac 已提交
34 35 36
| 类型                | 说明                                   |
| ------------------- | -------------------------------------- |
| Promise<void> | Promise对象。无返回结果的Promise对象。 |
Z
zengyawen 已提交
37

H
HelloCrease 已提交
38
**示例:** 
W
wuzhihuitmac 已提交
39

H
HelloCrease 已提交
40
  ```js
41 42 43 44 45
  vibrator.vibrate(1000).then(()=>{
      console.log("Promise returned to indicate a successful vibration.");
  }, (error)=>{
      console.log("error.code"+error.code+"error.message"+error.message);
  });
Z
zengyawen 已提交
46
  ```
Z
zengyawen 已提交
47

W
wuzhihuitmac 已提交
48
## vibrator.vibrate<sup>9+</sup>
W
wuzhihuitmac 已提交
49 50 51 52 53

vibrate(effect: VibrateEffect, attribute: VibrateAttribute): Promise&lt;void&gt;

按照指定振动效果和振动属性触发马达振动。

W
wuzhihuitmac 已提交
54
**需要权限**:ohos.permission.VIBRATE,该权限为系统权限
W
wuzhihuitmac 已提交
55 56 57 58 59

**系统能力**:SystemCapability.Sensors.MiscDevice

**参数:** 

C
cff-gite 已提交
60 61 62 63
| 参数名    | 类型                                               | 必填 | 说明           |
| --------- | -------------------------------------------------- | ---- | :------------- |
| effect    | [VibrateEffect](#vibrateeffect<sup>9+</sup>)       | 是   | 马达振动效果。 |
| attribute | [VibrateAttribute](#vibrateattribute<sup>9+</sup>) | 是   | 马达振动属性。 |
W
wuzhihuitmac 已提交
64 65 66

**返回值:** 

W
wuzhihuitmac 已提交
67 68 69
| 类型                | 说明                                   |
| ------------------- | -------------------------------------- |
| Promise&lt;void&gt; | Promise对象。无返回结果的Promise对象。 |
W
wuzhihuitmac 已提交
70 71 72 73 74

**示例:** 

```js
vibrator.vibrate({
W
wuzhihuitmac 已提交
75 76
    type: 'time',
    duration: 1000
W
wuzhihuitmac 已提交
77
}, {
W
wuzhihuitmac 已提交
78 79
   	id: 0,
    usage: 'alarm'
W
wuzhihuitmac 已提交
80
}).then((result)=>{
W
wuzhihuitmac 已提交
81
    console.log("Promise returned to indicate a successful vibration");
W
wuzhihuitmac 已提交
82
}).catch((error)=>{
W
wuzhihuitmac 已提交
83
    console.log("error.code"+error.code+"error.message"+error.message);
W
wuzhihuitmac 已提交
84 85
})
```
Z
zengyawen 已提交
86

87
## vibrator.vibrate
Z
zengyawen 已提交
88 89

vibrate(duration: number, callback?: AsyncCallback&lt;void&gt;): void
Z
zengyawen 已提交
90 91 92

按照指定持续时间触发马达振动。

W
wuzhihuitmac 已提交
93
**需要权限**:ohos.permission.VIBRATE,该权限为系统权限
C
cff-gite 已提交
94 95 96

**系统能力**:SystemCapability.Sensors.MiscDevice

H
HelloCrease 已提交
97
**参数:** 
W
wuzhihuitmac 已提交
98 99 100 101
| 参数名   | 类型                      | 必填 | 说明                                                       |
| -------- | ------------------------- | ---- | ---------------------------------------------------------- |
| duration | number                    | 是   | 马达振动时长, 单位ms。                                     |
| callback | AsyncCallback&lt;void&gt; | 否   | 回调函数。当马达振动成功,err为undefined,否则为错误对象。 |
Z
zengyawen 已提交
102

H
HelloCrease 已提交
103
**示例:** 
W
wuzhihuitmac 已提交
104

H
HelloCrease 已提交
105
  ```js
Z
zengyawen 已提交
106
  vibrator.vibrate(1000,function(error){
107 108 109 110 111
      if(error){
          console.log("error.code"+error.code+"error.message"+error.message);
      }else{
          console.log("Callback returned to indicate a successful vibration.");
      }
Z
zengyawen 已提交
112 113
  })
  ```
Z
zengyawen 已提交
114 115


116
## vibrator.vibrate
Z
zengyawen 已提交
117 118

vibrate(effectId: EffectId): Promise&lt;void&gt;
Z
zengyawen 已提交
119

W
wuzhihuitmac 已提交
120
按照预置振动效果触发马达振动。
Z
zengyawen 已提交
121

W
wuzhihuitmac 已提交
122
**需要权限**:ohos.permission.VIBRATE,该权限为系统权限
C
cff-gite 已提交
123 124 125

**系统能力**:SystemCapability.Sensors.MiscDevice

H
HelloCrease 已提交
126
**参数:** 
W
wuzhihuitmac 已提交
127 128 129
| 参数名   | 类型                  | 必填 | 说明               |
| -------- | --------------------- | ---- | ------------------ |
| effectId | [EffectId](#effectid) | 是   | 预置的振动效果ID。 |
Z
zengyawen 已提交
130

H
HelloCrease 已提交
131
**返回值:** 
W
wuzhihuitmac 已提交
132 133 134
| 类型                | 说明                                   |
| ------------------- | -------------------------------------- |
| Promise&lt;void&gt; | Promise对象。无返回结果的Promise对象。 |
Z
zengyawen 已提交
135

H
HelloCrease 已提交
136
**示例:** 
H
HelloCrease 已提交
137
  ```js
138 139 140 141 142
  vibrator.vibrate(vibrator.EffectId.EFFECT_CLOCK_TIMER).then(()=>{
      console.log("Promise returned to indicate a successful vibration.");
  }, (error)=>{
      console.log("error.code"+error.code+"error.message"+error.message);
  });
Z
zengyawen 已提交
143
  ```
Z
zengyawen 已提交
144

Z
zengyawen 已提交
145

146
## vibrator.vibrate
Z
zengyawen 已提交
147 148

vibrate(effectId: EffectId, callback?: AsyncCallback&lt;void&gt;): void
Z
zengyawen 已提交
149 150 151

按照指定振动效果触发马达振动。

W
wuzhihuitmac 已提交
152
**需要权限**:ohos.permission.VIBRATE,该权限为系统权限
C
cff-gite 已提交
153 154 155

**系统能力**:SystemCapability.Sensors.MiscDevice

H
HelloCrease 已提交
156
**参数:** 
W
wuzhihuitmac 已提交
157 158 159 160
| 参数名   | 类型                      | 必填 | 说明                                                       |
| -------- | ------------------------- | ---- | ---------------------------------------------------------- |
| effectId | [EffectId](#effectid)     | 是   | 预置的振动效果ID。                                         |
| callback | AsyncCallback&lt;void&gt; | 否   | 回调函数。当马达振动成功,err为undefined,否则为错误对象。 |
Z
zengyawen 已提交
161

H
HelloCrease 已提交
162
**示例:** 
W
wuzhihuitmac 已提交
163

H
HelloCrease 已提交
164
  ```js
165 166 167 168 169 170
  vibrator.vibrate(vibrator.EffectId.EFFECT_CLOCK_TIMER, function(error){
      if(error){
          console.log("error.code"+error.code+"error.message"+error.message);
      }else{
          console.log("Callback returned to indicate a successful vibration.");
      }
Z
zengyawen 已提交
171 172
  })
  ```
Z
zengyawen 已提交
173

W
wuzhihuitmac 已提交
174
## vibrator.vibrate<sup>9+</sup>
W
wuzhihuitmac 已提交
175 176 177 178 179

vibrate(effect: VibrateEffect, attribute: VibrateAttribute, callback: AsyncCallback&lt;void&gt;): void

按照指定振动效果和振动属性触发马达振动。

W
wuzhihuitmac 已提交
180
**需要权限**:ohos.permission.VIBRATE,该权限为系统权限
W
wuzhihuitmac 已提交
181 182 183 184 185

**系统能力**:SystemCapability.Sensors.MiscDevice

**参数:** 

C
cff-gite 已提交
186 187 188 189 190
| 参数名    | 类型                                               | 必填 | 说明                                                       |
| --------- | -------------------------------------------------- | ---- | :--------------------------------------------------------- |
| effect    | [VibrateEffect](#VibrateEffect<sup>9+</sup>)       | 是   | 马达振动效果。                                             |
| attribute | [VibrateAttribute](#vibrateattribute<sup>9+</sup>) | 是   | 马达振动属性。                                             |
| callback  | AsyncCallback&lt;void&gt;                          | 是   | 回调函数。当马达振动成功,err为undefined,否则为错误对象。 |
W
wuzhihuitmac 已提交
191 192 193 194 195

示例:

```js
vibrator.vibrate({
W
wuzhihuitmac 已提交
196 197
    type:'time',
    duration:1000,
W
wuzhihuitmac 已提交
198
},{
W
wuzhihuitmac 已提交
199 200
    id:0,
    usage: 'alarm'
W
wuzhihuitmac 已提交
201
}, (error)=>{
W
wuzhihuitmac 已提交
202 203
    if(error){
        console.log(TAG + " fail, error.code:"+error.code+",error.message:"+error.message);
W
wuzhihuitmac 已提交
204
    }else{
W
wuzhihuitmac 已提交
205 206
        console.log("Callback returned to indicate a successful vibration.");
    }
W
wuzhihuitmac 已提交
207 208
});
```
Z
zengyawen 已提交
209

210
## vibrator.stop
Z
zengyawen 已提交
211 212

stop(stopMode: VibratorStopMode): Promise&lt;void&gt;
Z
zengyawen 已提交
213 214 215

按照要停止指定的振动模式来停止马达的振动。如果要停止的振动模式与触发马达振动时的模式不相同,则调用本接口会失败。

W
wuzhihuitmac 已提交
216
**需要权限**:ohos.permission.VIBRATE,该权限为系统权限
C
cff-gite 已提交
217 218 219

**系统能力**:SystemCapability.Sensors.MiscDevice

H
HelloCrease 已提交
220
**参数:** 
W
wuzhihuitmac 已提交
221 222 223
| 参数名   | 类型                                  | 必填 | 说明                     |
| -------- | ------------------------------------- | ---- | ------------------------ |
| stopMode | [VibratorStopMode](#vibratorstopmode) | 是   | 马达停止指定的振动模式。 |
Z
zengyawen 已提交
224

H
HelloCrease 已提交
225
**返回值:** 
W
wuzhihuitmac 已提交
226

W
wuzhihuitmac 已提交
227 228 229
| 类型                | 说明                                   |
| ------------------- | -------------------------------------- |
| Promise&lt;void&gt; | Promise对象。无返回结果的Promise对象。 |
Z
zengyawen 已提交
230

H
HelloCrease 已提交
231
**示例:** 
W
wuzhihuitmac 已提交
232

H
HelloCrease 已提交
233
  ```js
234 235 236 237 238
  vibrator.stop(vibrator.VibratorStopMode.VIBRATOR_STOP_MODE_PRESET).then(()=>{
      console.log("Promise returned to indicate a successful vibration.");
  }, (error)=>{
      console.log("error.code"+error.code+"error.message"+error.message);
  });
Z
zengyawen 已提交
239
  ```
Z
zengyawen 已提交
240 241


242
## vibrator.stop
Z
zengyawen 已提交
243 244

stop(stopMode: VibratorStopMode, callback?: AsyncCallback&lt;void&gt;): void;
Z
zengyawen 已提交
245 246 247

按照要停止指定的振动模式来停止马达的振动。如果要停止的振动模式与触发马达振动时的模式不相同,则调用本接口会失败。

W
wuzhihuitmac 已提交
248
**需要权限**:ohos.permission.VIBRATE,该权限为系统权限
C
cff-gite 已提交
249 250 251

**系统能力**:SystemCapability.Sensors.MiscDevice

H
HelloCrease 已提交
252
**参数:** 
W
wuzhihuitmac 已提交
253 254 255 256
| 参数名   | 类型                                  | 必填 | 说明                                                         |
| -------- | ------------------------------------- | ---- | ------------------------------------------------------------ |
| stopMode | [VibratorStopMode](#vibratorstopmode) | 是   | 马达停止指定的振动模式。                                     |
| callback | AsyncCallback&lt;void&gt;             | 否   | 回调函数。当马达停止振动成功,err为undefined,否则为错误对象。 |
Z
zengyawen 已提交
257

H
HelloCrease 已提交
258
**示例:** 
W
wuzhihuitmac 已提交
259

H
HelloCrease 已提交
260
  ```js
261 262 263 264 265 266
  vibrator.stop(vibrator.VibratorStopMode.VIBRATOR_STOP_MODE_PRESET, function(error){
      if(error){
          console.log("error.code"+error.code+"error.message"+error.message);
      }else{
          console.log("Callback returned to indicate successful.");
      }
Z
zengyawen 已提交
267 268
  })
  ```
Z
zengyawen 已提交
269 270


Z
zengyawen 已提交
271
## EffectId
Z
zengyawen 已提交
272

W
wuzhihuitmac 已提交
273
马达振动效果的字符串。
Z
zengyawen 已提交
274

C
cff-gite 已提交
275 276
**系统能力**:以下各项对应的系统能力均为SystemCapability.Sensors.MiscDevice

W
wuzhihuitmac 已提交
277 278 279
| 名称               | 默认值               | 说明               |
| ------------------ | -------------------- | ------------------ |
| EFFECT_CLOCK_TIMER | "haptic.clock.timer" | 预置的振动效果ID。 |
Z
zengyawen 已提交
280 281


Z
zengyawen 已提交
282 283
## VibratorStopMode

W
wuzhihuitmac 已提交
284
马达要停止指定的振动模式。
Z
zengyawen 已提交
285

C
cff-gite 已提交
286 287
**系统能力**:以下各项对应的系统能力均为SystemCapability.Sensors.MiscDevice

W
wuzhihuitmac 已提交
288 289 290 291
| 名称                      | 默认值   | 说明                                                         |
| ------------------------- | -------- | ------------------------------------------------------------ |
| VIBRATOR_STOP_MODE_TIME   | "time"   | 停止模式为duration模式的振动。即触发振动时参数类型为number,参数本身为振动持续时间的触发方式。 |
| VIBRATOR_STOP_MODE_PRESET | "preset" | 停止模式为预置EffectId的振动。即触发振动时参数类型为EffectId,参数本身为马达振动效果的字符串的触发方式。 |
W
wuzhihuitmac 已提交
292

W
wuzhihuitmac 已提交
293
## VibrateEffect<sup>9+</sup>
W
wuzhihuitmac 已提交
294

C
cff-gite 已提交
295 296
**系统能力**:以下各项对应的系统能力均为SystemCapability.Sensors.MiscDevice

C
cff-gite 已提交
297 298 299 300
| 类型                                         | 说明                           |
| -------------------------------------------- | ------------------------------ |
| [VibrateTime](#vibratetime<sup>9+</sup>)     | 按照指定持续时间触发马达振动。 |
| [VibratePreset](#vibratepreset<sup>9+</sup>) | 按照预置振动类型触发马达振动。 |
W
wuzhihuitmac 已提交
301

W
wuzhihuitmac 已提交
302
## VibrateTime<sup>9+</sup>
W
wuzhihuitmac 已提交
303

W
wuzhihuitmac 已提交
304
马达振动时长。
W
wuzhihuitmac 已提交
305

W
wuzhihuitmac 已提交
306 307 308
| 名称     | 默认值 | 说明                           |
| -------- | ------ | ------------------------------ |
| type     | "time" | 按照指定持续时间触发马达振动。 |
W
wuzhihuitmac 已提交
309
| duration | -      | 马达振动时长, 单位ms。         |
W
wuzhihuitmac 已提交
310

W
wuzhihuitmac 已提交
311
## VibratePreset<sup>9+</sup>
W
wuzhihuitmac 已提交
312

W
wuzhihuitmac 已提交
313
马达预置振动类型。
W
wuzhihuitmac 已提交
314

W
wuzhihuitmac 已提交
315 316 317
| 名称     | 默认值   | 说明                           |
| -------- | -------- | ------------------------------ |
| type     | "preset" | 按照预置振动效果触发马达振动。 |
W
wuzhihuitmac 已提交
318 319
| effectId | -        | 预置的振动效果ID。             |
| count    | -        | 重复振动的次数。               |
W
wuzhihuitmac 已提交
320

W
wuzhihuitmac 已提交
321
## VibrateAttribute<sup>9+</sup>
W
wuzhihuitmac 已提交
322

W
wuzhihuitmac 已提交
323 324 325 326 327
马达振动属性。

| 名称  | 默认值 | 说明           |
| ----- | ------ | -------------- |
| id    | 0      | 振动器id。     |
W
wuzhihuitmac 已提交
328
| usage | -      | 马达振动场景。 |
W
wuzhihuitmac 已提交
329

W
wuzhihuitmac 已提交
330
## Usage<sup>9+</sup>
W
wuzhihuitmac 已提交
331

W
wuzhihuitmac 已提交
332 333 334 335 336 337 338 339 340 341 342 343 344
振动使用场景。

| 名称             | 类型   | 说明                           |
| ---------------- | ------ | ------------------------------ |
| unknown          | string | 没有明确使用场景,最低优先级。 |
| alarm            | string | 用于警报振动的场景。           |
| ring             | string | 用于铃声振动的场景。           |
| notification     | string | 用于通知振动的场景。           |
| communication    | string | 用于通信振动的场景。           |
| touch            | string | 用于触摸振动的场景。           |
| media            | string | 用于多媒体振动的场景。         |
| physicalFeedback | string | 用于物理反馈振动的场景。       |
| simulateReality  | string | 用于模拟现实振动的场景。       |
W
wuzhihuitmac 已提交
345