js-apis-system-sensor.md 17.7 KB
Newer Older
Z
zengyawen 已提交
1 2 3 4
# 传感器


> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
Z
zengyawen 已提交
5 6
>
> - 从API Version 8开始,该接口不再维护,推荐使用新接口[`@ohos.sensor`](js-apis-sensor.md)。
Z
zengyawen 已提交
7 8 9 10 11 12 13 14 15 16 17 18 19 20
> - 本模块首批接口从API version 4开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
> - 该功能使用需要对应硬件支持,仅支持真机调试。


## 导入模块


```
import sensor from '@system.sensor';
```


## 传感器错误码列表

H
HelloCrease 已提交
21 22 23
| 错误码  | 说明             |
| ---- | -------------- |
| 900  | 当前设备不支持相应的传感器。 |
Z
zengyawen 已提交
24 25 26 27 28 29 30

## sensor.subscribeAccelerometer

subscribeAccelerometer(Object): void

观察加速度数据变化。针对同一个应用,多次点击调用时,会覆盖前面的调用效果,即仅最后一次调用生效。

C
cff-gite 已提交
31
**系统能力**:SystemCapability.Sensors.Sensor
C
cff-gite 已提交
32 33 34

**需要权限**:ohos.permission.ACCELEROMETER,该权限为系统权限

Z
zengyawen 已提交
35 36
**参数:**

H
HelloCrease 已提交
37 38 39 40 41
| 参数名      | 类型       | 必填   | 说明                                       |
| -------- | -------- | ---- | ---------------------------------------- |
| interval | string   | 是    | 频率参数,加速度的回调函数执行频率。<br/>默认为normal,可选值有:<br/>-&nbsp;game:极高的回调频率,20ms/次,适用于游戏。<br/>-&nbsp;ui:较高的回调频率,60ms/次,适用于UI更新。<br/>-&nbsp;normal:普通的回调频率,200ms/次,低功耗。 |
| success  | Function | 是    | 感应到加速度数据变化后的回调函数。                        |
| fail     | Function | 否    | 接口调用失败的回调函数。                             |
Z
zengyawen 已提交
42 43 44

success返回值:

H
HelloCrease 已提交
45 46 47 48 49
| 参数名  | 类型     | 说明      |
| ---- | ------ | ------- |
| x    | number | x轴的加速度。 |
| y    | number | y轴的加速度。 |
| z    | number | z轴的加速度。 |
Z
zengyawen 已提交
50 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

**示例:**

```
sensor.subscribeAccelerometer({
  interval: 'normal',
  success: function(ret) {
    console.log('X-axis data: ' + ret.x);
    console.log('Y-axis data: ' + ret.y);
    console.log('Z-axis data: ' + ret.z);
  },
  fail: function(data, code) {
    console.error('Subscription failed. Code: ' + code + '; Data: ' + data);
  },
});
```

> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 建议在页面销毁时,即onDestory回调中,取消数据订阅,避免不必要的性能开销。

## sensor.unsubscribeAccelerometer

unsubscribeAccelerometer(): void

取消订阅加速度数据。

C
cff-gite 已提交
76
**系统能力**:SystemCapability.Sensors.Sensor
C
cff-gite 已提交
77 78 79

**需要权限**:ohos.permission.ACCELEROMETER,该权限为系统权限

Z
zengyawen 已提交
80 81 82 83 84 85 86 87 88 89 90 91
**示例:**

```
sensor.unsubscribeAccelerometer();
```

## sensor.subscribeCompass

subscribeCompass(Object): void

订阅罗盘数据变化。针对同一个应用,多次点击调用时,会覆盖前面的调用效果,即仅最后一次调用生效。

C
cff-gite 已提交
92
**系统能力**:SystemCapability.Sensors.Sensor
C
cff-gite 已提交
93

Z
zengyawen 已提交
94 95
**参数:**

H
HelloCrease 已提交
96 97 98 99
| 参数名     | 类型       | 必填   | 说明              |
| ------- | -------- | ---- | --------------- |
| success | Function | 是    | 罗盘数据改变后触发的回调函数。 |
| fail    | Function | 否    | 接口调用失败的回调函数。    |
Z
zengyawen 已提交
100 101 102

success返回值:

H
HelloCrease 已提交
103 104 105
| 参数名       | 类型     | 说明         |
| --------- | ------ | ---------- |
| direction | number | 设备面对的方向度数。 |
Z
zengyawen 已提交
106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128

**示例:**

```
sensor.subscribeCompass({
  success: function(ret) {
    console.log('get data direction:' + ret.direction);
  },
  fail: function(data, code) {
    console.error('Subscription failed. Code: ' + code + '; Data: ' + data);
  },
});
```

> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 建议在页面销毁时,即onDestory回调中,取消数据订阅,避免不必要的性能开销。

## sensor.unsubscribeCompass

unsubscribeCompass(): void

取消订阅罗盘。

C
cff-gite 已提交
129
**系统能力**:SystemCapability.Sensors.Sensor
C
cff-gite 已提交
130

Z
zengyawen 已提交
131 132 133 134 135 136 137 138 139 140 141 142
**示例:**

```
sensor.unsubscribeCompass();
```

## sensor.subscribeProximity

subscribeProximity(Object): void

订阅距离感应数据变化。针对同一个应用,多次点击调用时,会覆盖前面的调用效果,即仅最后一次调用生效。

C
cff-gite 已提交
143
**系统能力**:SystemCapability.Sensors.Sensor
C
cff-gite 已提交
144

Z
zengyawen 已提交
145 146
**参数:**

H
HelloCrease 已提交
147 148 149 150
| 参数名     | 类型       | 必填   | 说明                |
| ------- | -------- | ---- | ----------------- |
| success | Function | 是    | 距离感应数据改变后调用的回调函数。 |
| fail    | Function | 否    | 接口调用失败的回调函数。      |
Z
zengyawen 已提交
151 152 153

success返回值:

H
HelloCrease 已提交
154 155 156
| 参数名      | 类型     | 说明                    |
| -------- | ------ | --------------------- |
| distance | number | 可见物体相对于设备显示屏的接近或远离状态。 |
Z
zengyawen 已提交
157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179

**示例:**

```
sensor.subscribeProximity({
  success: function(ret) {
    console.log('get data distance:' + ret.distance);
  },
  fail: function(data, code) {
    console.error('Subscription failed. Code: ' + code + '; Data: ' + data);
  },
});
```

> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 建议在页面销毁时,即onDestory回调中,取消数据订阅,避免不必要的性能开销。

## sensor.unsubscribeProximity

unsubscribeProximity(): void

取消订阅距离感应。

C
cff-gite 已提交
180
**系统能力**:SystemCapability.Sensors.Sensor
C
cff-gite 已提交
181

Z
zengyawen 已提交
182 183 184 185 186 187 188 189 190 191 192 193
**示例:**

```
sensor.unsubscribeProximity();
```

## sensor.subscribeLight

sensor.subscribeLight(Object): void

订阅环境光线感应数据变化。再次调用时,会覆盖前一次调用效果,即仅最后一次调用生效。

C
cff-gite 已提交
194
**系统能力**:SystemCapability.Sensors.Sensor
C
cff-gite 已提交
195

Z
zengyawen 已提交
196 197
**参数:**

H
HelloCrease 已提交
198 199 200 201
| 参数名     | 类型       | 必填   | 说明              |
| ------- | -------- | ---- | --------------- |
| success | Function | 是    | 光线感应数据改变后的回调函数。 |
| fail    | Function | 否    | 接口调用失败的回调函数。    |
Z
zengyawen 已提交
202 203 204

success返回值:

H
HelloCrease 已提交
205 206 207
| 参数名       | 类型     | 说明           |
| --------- | ------ | ------------ |
| intensity | number | 光线强度,单位为lux。 |
Z
zengyawen 已提交
208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230

**示例:**

```
sensor.subscribeLight({
  success: function(ret) {
    console.log('get data intensity:' + ret.intensity);
  },
  fail: function(data, code) {
    console.error('Subscription failed. Code: ' + code + '; Data: ' + data);
  },
});
```

> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 建议在页面销毁时,即onDestory回调中,取消数据订阅,避免不必要的性能开销。

## sensor.unsubscribeLight

unsubscribeLight(): void

取消订阅环境光线感应。

C
cff-gite 已提交
231
**系统能力**:SystemCapability.Sensors.Sensor
C
cff-gite 已提交
232

Z
zengyawen 已提交
233 234 235 236 237 238 239 240 241 242 243 244
**示例:**

```
sensor.unsubscribeLight();
```

## sensor.subscribeStepCounter

subscribeStepCounter(Object): void

订阅计步传感器数据变化。针对同一个应用,多次点击调用时,会覆盖前面的调用效果,即仅最后一次调用生效。

C
cff-gite 已提交
245
**系统能力**:SystemCapability.Sensors.Sensor
C
cff-gite 已提交
246 247 248

**需要权限**:ohos.permission.ACTIVITY_MOTION

Z
zengyawen 已提交
249 250
**参数:**

H
HelloCrease 已提交
251 252 253 254
| 参数名     | 类型       | 必填   | 说明               |
| ------- | -------- | ---- | ---------------- |
| success | Function | 是    | 计步传感器数据改变后的回调函数。 |
| fail    | Function | 否    | 接口调用失败的回调函数。     |
Z
zengyawen 已提交
255 256 257

success返回值:

H
HelloCrease 已提交
258 259 260
| 参数名   | 类型     | 说明                    |
| ----- | ------ | --------------------- |
| steps | number | 计步传感器重启后累计记录的步数。<br/> |
Z
zengyawen 已提交
261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283

**示例:**

```
sensor.subscribeStepCounter({
  success: function(ret) {
    console.log('get step value:' + ret.steps);
  },
  fail: function(data, code) {
    console.log('Subscription failed. Code: ' + code + '; Data: ' + data);
  },
});
```

> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 建议在页面销毁时,即onDestory回调中,取消数据订阅,避免不必要的性能开销。

## sensor.unsubscribeStepCounter

unsubscribeStepCounter(): void

取消订阅计步传感器。

C
cff-gite 已提交
284
**系统能力**:SystemCapability.Sensors.Sensor
C
cff-gite 已提交
285 286 287

**需要权限**:ohos.permission.ACTIVITY_MOTION

Z
zengyawen 已提交
288 289 290 291 292 293 294 295 296 297 298 299 300
**示例:**

```
sensor.unsubscribeStepCounter();
```


## sensor.subscribeBarometer

subcribeBarometer(Object): void

订阅气压传感器数据变化。针对同一个应用,多次点击调用时,会覆盖前面的调用效果,即仅最后一次调用生效。

C
cff-gite 已提交
301
**系统能力**:SystemCapability.Sensors.Sensor
C
cff-gite 已提交
302

Z
zengyawen 已提交
303 304
**参数:**

H
HelloCrease 已提交
305 306 307 308
| 参数名     | 类型       | 必填   | 说明               |
| ------- | -------- | ---- | ---------------- |
| success | Function | 是    | 气压传感器数据改变后的回调函数。 |
| fail    | Function | 否    | 接口调用失败的回调函数。     |
Z
zengyawen 已提交
309 310 311

success返回值:

H
HelloCrease 已提交
312 313 314
| 参数名      | 类型     | 说明          |
| -------- | ------ | ----------- |
| pressure | number | 气压值,单位:帕斯卡。 |
Z
zengyawen 已提交
315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338

**示例:**

```
sensor.subscribeBarometer({
  success: function(ret) {
    console.log('get data value:' + ret.pressure);
  },
  fail: function(data, code) {
    console.log('Subscription failed. Code: ' + code + '; Data: ' + data);
  },
});
```

> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 建议在页面销毁时,即onDestory回调中,取消数据订阅,避免不必要的性能开销。


## sensor.unsubscribeBarometer

unsubscribeBarometer(): void

取消订阅气压传感器。

C
cff-gite 已提交
339
**系统能力**:SystemCapability.Sensors.Sensor
C
cff-gite 已提交
340

Z
zengyawen 已提交
341 342 343 344 345 346 347 348 349 350 351 352 353
**示例:**

```
sensor.unsubscribeBarometer();
```


## sensor.subscribeHeartRate

subscribeHeartRate(Object): void

订阅心率传感器数据变化。针对同一个应用,多次点击调用时,会覆盖前面的调用效果,即仅最后一次调用生效。

C
cff-gite 已提交
354
**系统能力**:SystemCapability.Sensors.Sensor
C
cff-gite 已提交
355 356 357

**需要权限**:ohos.permission.READ_HEALTH_DATA

Z
zengyawen 已提交
358 359
**参数:**

H
HelloCrease 已提交
360 361 362 363
| 参数名     | 类型       | 必填   | 说明                        |
| ------- | -------- | ---- | ------------------------- |
| success | Function | 是    | 心率传感器数据改变后的回调函数,默认频率5s/次。 |
| fail    | Function | 否    | 接口调用失败的回调函数。              |
Z
zengyawen 已提交
364 365 366

success返回值:

H
HelloCrease 已提交
367 368 369
| 参数名       | 类型     | 说明   |
| --------- | ------ | ---- |
| heartRate | number | 心率值。 |
Z
zengyawen 已提交
370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393

**示例:**

```
sensor.subscribeHeartRate({
  success: function(ret) {
    console.log('get heartrate value:' + ret.heartRate);
  },
  fail: function(data, code) {
    console.log('Subscription failed. Code: ' + code + '; Data: ' + data);
  },
});
```

> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 建议在页面销毁时,即onDestory回调中,取消数据订阅,避免不必要的性能开销。


## sensor.unsubscribeHeartRate

unsubscribeHeartRate(): void

取消订阅心率。

C
cff-gite 已提交
394
**系统能力**:SystemCapability.Sensors.Sensor
C
cff-gite 已提交
395 396 397

**需要权限**:ohos.permission.READ_HEALTH_DATA

Z
zengyawen 已提交
398 399 400 401 402 403 404 405 406 407 408 409
**示例:**

```
sensor.unsubscribeHeartRate();
```

## sensor.subscribeOnBodyState

subscribeOnBodyState(Object): void

订阅设备佩戴状态。针对同一个应用,多次点击调用时,会覆盖前面的调用效果,即仅最后一次调用生效。

C
cff-gite 已提交
410
**系统能力**:SystemCapability.Sensors.Sensor
C
cff-gite 已提交
411

Z
zengyawen 已提交
412 413
**参数:**

H
HelloCrease 已提交
414 415 416 417
| 参数名     | 类型       | 必填   | 说明            |
| ------- | -------- | ---- | ------------- |
| success | Function | 是    | 穿戴状态改变后的回调函数。 |
| fail    | Function | 否    | 接口调用失败的回调函数。  |
Z
zengyawen 已提交
418 419 420

success返回值:

H
HelloCrease 已提交
421 422 423
| 参数名   | 类型      | 说明     |
| ----- | ------- | ------ |
| value | boolean | 是否已佩戴。 |
Z
zengyawen 已提交
424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446

**示例:**

```
sensor.subscribeOnBodyState({
  success: function(ret) {
    console.log('get on-body state value:' + ret.value);
  },
  fail: function(data, code) {
    console.log('Subscription failed. Code: ' + code + '; Data: ' + data);
  },
});
```

> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 建议在页面销毁时,即onDestory回调中,取消数据订阅,避免不必要的性能开销。

## sensor.unsubscribeOnBodyState

unsubscribeOnBodyState(): void

取消订阅设备佩戴状态。

C
cff-gite 已提交
447
**系统能力**:SystemCapability.Sensors.Sensor
C
cff-gite 已提交
448

Z
zengyawen 已提交
449 450 451 452 453 454 455 456 457 458 459 460
**示例:**

```
sensor.unsubscribeOnBodyState();
```

## sensor.getOnBodyState

getOnBodyState(Object): void

获取设备佩戴状态。

C
cff-gite 已提交
461
**系统能力**:SystemCapability.Sensors.Sensor
C
cff-gite 已提交
462

Z
zengyawen 已提交
463 464
**参数:**

H
HelloCrease 已提交
465 466 467 468 469
| 参数名      | 类型       | 必填   | 说明           |
| -------- | -------- | ---- | ------------ |
| success  | Function | 否    | 接口调用成功的回调函数。 |
| fail     | Function | 否    | 接口调用失败的回调函数。 |
| complete | Function | 否    | 接口调用结束的回调函数。 |
Z
zengyawen 已提交
470 471 472

success返回值:

H
HelloCrease 已提交
473 474 475
| 参数名   | 类型      | 说明     |
| ----- | ------- | ------ |
| value | boolean | 是否已佩戴。 |
Z
zengyawen 已提交
476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497

**示例:**

```
sensor.getOnBodyState({
  success: function(ret) {
    console.log('on body state: ' + ret.value);
  },
  fail: function(data, code) {
    console.log('Subscription failed. Code: ' + code + '; Data: ' + data);
  },
});
```

## sensor.subscribeDeviceOrientation<sup>6+</sup>

subscribeDeviceOrientation(interval: string, success: (data: DeviceOrientationResponse), fail?: (data: string, code: number)): void

观察设备方向传感器数据变化。

针对同一个应用,多次点击调用时,会覆盖前面的调用效果,即仅最后一次调用生效;针对同一个方法内,不支持多次调用。

C
cff-gite 已提交
498
**系统能力**:SystemCapability.Sensors.Sensor
C
cff-gite 已提交
499

Z
zengyawen 已提交
500 501
**参数:**

H
HelloCrease 已提交
502 503 504 505 506
| 参数名      | 类型       | 必填   | 说明                                       |
| -------- | -------- | ---- | ---------------------------------------- |
| interval | string   | 是    | 频率参数,设备方向传感器的回调函数执行频率。<br/>默认为normal,可选值有:<br/>-&nbsp;game:极高的回调频率,20ms/次,适用于游戏。<br/>-&nbsp;ui:较高的回调频率,60ms/次,适用于UI更新。<br/>-&nbsp;normal:普通的回调频率,200ms/次,低功耗。 |
| success  | Function | 是    | 感应到设备方向传感器数据变化后的回调函数。                    |
| fail     | Function | 否    | 接口调用失败的回调函数。                             |
Z
zengyawen 已提交
507 508

 success返回值:
H
HelloCrease 已提交
509 510 511 512 513
| 参数名   | 类型     | 说明                                       |
| ----- | ------ | ---------------------------------------- |
| alpha | number | 当设备坐标&nbsp;X/Y&nbsp;和地球&nbsp;X/Y&nbsp;重合时,绕着&nbsp;Z&nbsp;轴转动的夹角为&nbsp;alpha。 |
| beta  | number | 当设备坐标&nbsp;Y/Z&nbsp;和地球&nbsp;Y/Z&nbsp;重合时,绕着&nbsp;X&nbsp;轴转动的夹角为&nbsp;beta。 |
| gamma | number | 当设备&nbsp;X/Z&nbsp;和地球&nbsp;X/Z&nbsp;重合时,绕着&nbsp;Y&nbsp;轴转动的夹角为&nbsp;gamma。 |
Z
zengyawen 已提交
514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539

**示例:**

```
sensor.subscribeDeviceOrientation({
  interval: 'normal',
  success: function(ret) {
    console.log('Alpha data: ' + ret.alpha);
    console.log('Beta data: ' + ret.beta);
    console.log('Gamma data: ' + ret.gamma);
  },
  fail: function(data, code) {
    console.error('Subscription failed. Code: ' + code + '; Data: ' + data);
  }
});
```

> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 建议在页面销毁时,即onDestory回调中,取消数据订阅,避免不必要的性能开销。

## sensor.unsubscribeDeviceOrientation<sup>6+</sup>

unsubscribeDeviceOrientation(): void

取消订阅设备方向传感器数据。

C
cff-gite 已提交
540
**系统能力**:SystemCapability.Sensors.Sensor
C
cff-gite 已提交
541

Z
zengyawen 已提交
542 543 544 545 546 547 548 549 550 551 552 553 554 555
**示例:**

```
sensor.unsubscribeDeviceOrientation();
```

## sensor.subscribeGyroscope<sup>6+</sup>

subscribeGyroscope(interval: string, success: (data: GyroscopeResponse), fail?: (data: string, code: number)): void

观察陀螺仪数据变化。

针对同一个应用,多次点击调用时,会覆盖前面的调用效果,即仅最后一次调用生效;针对同一个方法内,不支持多次调用。

C
cff-gite 已提交
556
**系统能力**:SystemCapability.Sensors.Sensor
C
cff-gite 已提交
557 558 559

**需要权限**:ohos.permission.GYROSCOPE,该权限为系统权限

Z
zengyawen 已提交
560 561
**参数:**

H
HelloCrease 已提交
562 563 564 565 566
| 参数名      | 类型       | 必填   | 说明                                       |
| -------- | -------- | ---- | ---------------------------------------- |
| interval | string   | 是    | 频率参数,陀螺仪的回调函数执行频率。<br/>默认为normal,可选值有:<br/>-&nbsp;game:极高的回调频率,20ms/次,适用于游戏。<br/>-&nbsp;ui:较高的回调频率,60ms/次,适用于UI更新。<br/>-&nbsp;normal:普通的回调频率,200ms/次,低功耗。 |
| success  | Function | 是    | 感应到陀螺仪数据变化后的回调函数。                        |
| fail     | Function | 否    | 接口调用失败的回调函数。                             |
Z
zengyawen 已提交
567 568 569

success返回值:

H
HelloCrease 已提交
570 571 572 573 574
| 参数名  | 类型     | 说明        |
| ---- | ------ | --------- |
| x    | number | x轴的旋转角速度。 |
| y    | number | y轴的旋转角速度。 |
| z    | number | z轴的旋转角速度。 |
Z
zengyawen 已提交
575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600

**示例:**

```
sensor.subscribeGyroscope({
  interval: 'normal',
  success: function(ret) {
    console.log('X-axis data: ' + ret.x);
    console.log('Y-axis data: ' + ret.y);
    console.log('Z-axis data: ' + ret.z);
  },
  fail: function(data, code) {
    console.error('Subscription failed. Code: ' + code + '; data: ' + data);
  }
});
```

> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 建议在页面销毁时,即onDestory回调中,取消数据订阅,避免不必要的性能开销。

## sensor.unsubscribeGyroscope<sup>6+</sup>

unsubscribeGyroscope(): void

取消订阅陀螺仪数据。

C
cff-gite 已提交
601
**系统能力**:SystemCapability.Sensors.Sensor
C
cff-gite 已提交
602 603 604

**需要权限**:ohos.permission.GYROSCOPE,该权限为系统权限

Z
zengyawen 已提交
605 606 607 608 609
**示例:**

```
sensor.unsubscribeGyroscope();
```