• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# 传感器
2
3
4> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
5>
6> - 从API Version 8开始,该接口不再维护,推荐使用新接口[`@ohos.sensor`](js-apis-sensor.md)。
7> - 本模块首批接口从API version 4开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
8> - 该功能使用需要对应硬件支持,仅支持真机调试。
9
10
11## 导入模块
12
13
14```
15import sensor from '@system.sensor';
16```
17
18
19## 传感器错误码列表
20
21| 错误码  | 说明             |
22| ---- | -------------- |
23| 900  | 当前设备不支持相应的传感器。 |
24
25## sensor.subscribeAccelerometer
26
27subscribeAccelerometer(Object): void
28
29观察加速度数据变化。针对同一个应用,多次点击调用时,会覆盖前面的调用效果,即仅最后一次调用生效。
30
31**系统能力**:SystemCapability.Sensors.Sensor
32
33**需要权限**:ohos.permission.ACCELEROMETER,该权限为系统权限
34
35**参数:**
36
37| 参数名      | 类型       | 必填   | 说明                                       |
38| -------- | -------- | ---- | ---------------------------------------- |
39| interval | string   | 是    | 频率参数,加速度的回调函数执行频率。<br/>默认为normal,可选值有:<br/>-&nbsp;game:极高的回调频率,20ms/次,适用于游戏。<br/>-&nbsp;ui:较高的回调频率,60ms/次,适用于UI更新。<br/>-&nbsp;normal:普通的回调频率,200ms/次,低功耗。 |
40| success  | Function | 是    | 感应到加速度数据变化后的回调函数。                        |
41| fail     | Function | 否    | 接口调用失败的回调函数。                             |
42
43success返回值:
44
45| 参数名  | 类型     | 说明      |
46| ---- | ------ | ------- |
47| x    | number | x轴的加速度。 |
48| y    | number | y轴的加速度。 |
49| z    | number | z轴的加速度。 |
50
51**示例:**
52
53```
54sensor.subscribeAccelerometer({
55  interval: 'normal',
56  success: function(ret) {
57    console.log('X-axis data: ' + ret.x);
58    console.log('Y-axis data: ' + ret.y);
59    console.log('Z-axis data: ' + ret.z);
60  },
61  fail: function(data, code) {
62    console.error('Subscription failed. Code: ' + code + '; Data: ' + data);
63  },
64});
65```
66
67> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
68> 建议在页面销毁时,即onDestory回调中,取消数据订阅,避免不必要的性能开销。
69
70## sensor.unsubscribeAccelerometer
71
72unsubscribeAccelerometer(): void
73
74取消订阅加速度数据。
75
76**系统能力**:SystemCapability.Sensors.Sensor
77
78**需要权限**:ohos.permission.ACCELEROMETER,该权限为系统权限
79
80**示例:**
81
82```
83sensor.unsubscribeAccelerometer();
84```
85
86## sensor.subscribeCompass
87
88subscribeCompass(Object): void
89
90订阅罗盘数据变化。针对同一个应用,多次点击调用时,会覆盖前面的调用效果,即仅最后一次调用生效。
91
92**系统能力**:SystemCapability.Sensors.Sensor
93
94**参数:**
95
96| 参数名     | 类型       | 必填   | 说明              |
97| ------- | -------- | ---- | --------------- |
98| success | Function | 是    | 罗盘数据改变后触发的回调函数。 |
99| fail    | Function | 否    | 接口调用失败的回调函数。    |
100
101success返回值:
102
103| 参数名       | 类型     | 说明         |
104| --------- | ------ | ---------- |
105| direction | number | 设备面对的方向度数。 |
106
107**示例:**
108
109```
110sensor.subscribeCompass({
111  success: function(ret) {
112    console.log('get data direction:' + ret.direction);
113  },
114  fail: function(data, code) {
115    console.error('Subscription failed. Code: ' + code + '; Data: ' + data);
116  },
117});
118```
119
120> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
121> 建议在页面销毁时,即onDestory回调中,取消数据订阅,避免不必要的性能开销。
122
123## sensor.unsubscribeCompass
124
125unsubscribeCompass(): void
126
127取消订阅罗盘。
128
129**系统能力**:SystemCapability.Sensors.Sensor
130
131**示例:**
132
133```
134sensor.unsubscribeCompass();
135```
136
137## sensor.subscribeProximity
138
139subscribeProximity(Object): void
140
141订阅距离感应数据变化。针对同一个应用,多次点击调用时,会覆盖前面的调用效果,即仅最后一次调用生效。
142
143**系统能力**:SystemCapability.Sensors.Sensor
144
145**参数:**
146
147| 参数名     | 类型       | 必填   | 说明                |
148| ------- | -------- | ---- | ----------------- |
149| success | Function | 是    | 距离感应数据改变后调用的回调函数。 |
150| fail    | Function | 否    | 接口调用失败的回调函数。      |
151
152success返回值:
153
154| 参数名      | 类型     | 说明                    |
155| -------- | ------ | --------------------- |
156| distance | number | 可见物体相对于设备显示屏的接近或远离状态。 |
157
158**示例:**
159
160```
161sensor.subscribeProximity({
162  success: function(ret) {
163    console.log('get data distance:' + ret.distance);
164  },
165  fail: function(data, code) {
166    console.error('Subscription failed. Code: ' + code + '; Data: ' + data);
167  },
168});
169```
170
171> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
172> 建议在页面销毁时,即onDestory回调中,取消数据订阅,避免不必要的性能开销。
173
174## sensor.unsubscribeProximity
175
176unsubscribeProximity(): void
177
178取消订阅距离感应。
179
180**系统能力**:SystemCapability.Sensors.Sensor
181
182**示例:**
183
184```
185sensor.unsubscribeProximity();
186```
187
188## sensor.subscribeLight
189
190sensor.subscribeLight(Object): void
191
192订阅环境光线感应数据变化。再次调用时,会覆盖前一次调用效果,即仅最后一次调用生效。
193
194**系统能力**:SystemCapability.Sensors.Sensor
195
196**参数:**
197
198| 参数名     | 类型       | 必填   | 说明              |
199| ------- | -------- | ---- | --------------- |
200| success | Function | 是    | 光线感应数据改变后的回调函数。 |
201| fail    | Function | 否    | 接口调用失败的回调函数。    |
202
203success返回值:
204
205| 参数名       | 类型     | 说明           |
206| --------- | ------ | ------------ |
207| intensity | number | 光线强度,单位为lux。 |
208
209**示例:**
210
211```
212sensor.subscribeLight({
213  success: function(ret) {
214    console.log('get data intensity:' + ret.intensity);
215  },
216  fail: function(data, code) {
217    console.error('Subscription failed. Code: ' + code + '; Data: ' + data);
218  },
219});
220```
221
222> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
223> 建议在页面销毁时,即onDestory回调中,取消数据订阅,避免不必要的性能开销。
224
225## sensor.unsubscribeLight
226
227unsubscribeLight(): void
228
229取消订阅环境光线感应。
230
231**系统能力**:SystemCapability.Sensors.Sensor
232
233**示例:**
234
235```
236sensor.unsubscribeLight();
237```
238
239## sensor.subscribeStepCounter
240
241subscribeStepCounter(Object): void
242
243订阅计步传感器数据变化。针对同一个应用,多次点击调用时,会覆盖前面的调用效果,即仅最后一次调用生效。
244
245**系统能力**:SystemCapability.Sensors.Sensor
246
247**需要权限**:ohos.permission.ACTIVITY_MOTION
248
249**参数:**
250
251| 参数名     | 类型       | 必填   | 说明               |
252| ------- | -------- | ---- | ---------------- |
253| success | Function | 是    | 计步传感器数据改变后的回调函数。 |
254| fail    | Function | 否    | 接口调用失败的回调函数。     |
255
256success返回值:
257
258| 参数名   | 类型     | 说明                    |
259| ----- | ------ | --------------------- |
260| steps | number | 计步传感器重启后累计记录的步数。<br/> |
261
262**示例:**
263
264```
265sensor.subscribeStepCounter({
266  success: function(ret) {
267    console.log('get step value:' + ret.steps);
268  },
269  fail: function(data, code) {
270    console.log('Subscription failed. Code: ' + code + '; Data: ' + data);
271  },
272});
273```
274
275> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
276> 建议在页面销毁时,即onDestory回调中,取消数据订阅,避免不必要的性能开销。
277
278## sensor.unsubscribeStepCounter
279
280unsubscribeStepCounter(): void
281
282取消订阅计步传感器。
283
284**系统能力**:SystemCapability.Sensors.Sensor
285
286**需要权限**:ohos.permission.ACTIVITY_MOTION
287
288**示例:**
289
290```
291sensor.unsubscribeStepCounter();
292```
293
294
295## sensor.subscribeBarometer
296
297subcribeBarometer(Object): void
298
299订阅气压传感器数据变化。针对同一个应用,多次点击调用时,会覆盖前面的调用效果,即仅最后一次调用生效。
300
301**系统能力**:SystemCapability.Sensors.Sensor
302
303**参数:**
304
305| 参数名     | 类型       | 必填   | 说明               |
306| ------- | -------- | ---- | ---------------- |
307| success | Function | 是    | 气压传感器数据改变后的回调函数。 |
308| fail    | Function | 否    | 接口调用失败的回调函数。     |
309
310success返回值:
311
312| 参数名      | 类型     | 说明          |
313| -------- | ------ | ----------- |
314| pressure | number | 气压值,单位:帕斯卡。 |
315
316**示例:**
317
318```
319sensor.subscribeBarometer({
320  success: function(ret) {
321    console.log('get data value:' + ret.pressure);
322  },
323  fail: function(data, code) {
324    console.log('Subscription failed. Code: ' + code + '; Data: ' + data);
325  },
326});
327```
328
329> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
330> 建议在页面销毁时,即onDestory回调中,取消数据订阅,避免不必要的性能开销。
331
332
333## sensor.unsubscribeBarometer
334
335unsubscribeBarometer(): void
336
337取消订阅气压传感器。
338
339**系统能力**:SystemCapability.Sensors.Sensor
340
341**示例:**
342
343```
344sensor.unsubscribeBarometer();
345```
346
347
348## sensor.subscribeHeartRate
349
350subscribeHeartRate(Object): void
351
352订阅心率传感器数据变化。针对同一个应用,多次点击调用时,会覆盖前面的调用效果,即仅最后一次调用生效。
353
354**系统能力**:SystemCapability.Sensors.Sensor
355
356**需要权限**:ohos.permission.READ_HEALTH_DATA
357
358**参数:**
359
360| 参数名     | 类型       | 必填   | 说明                        |
361| ------- | -------- | ---- | ------------------------- |
362| success | Function | 是    | 心率传感器数据改变后的回调函数,默认频率5s/次。 |
363| fail    | Function | 否    | 接口调用失败的回调函数。              |
364
365success返回值:
366
367| 参数名       | 类型     | 说明   |
368| --------- | ------ | ---- |
369| heartRate | number | 心率值。 |
370
371**示例:**
372
373```
374sensor.subscribeHeartRate({
375  success: function(ret) {
376    console.log('get heartrate value:' + ret.heartRate);
377  },
378  fail: function(data, code) {
379    console.log('Subscription failed. Code: ' + code + '; Data: ' + data);
380  },
381});
382```
383
384> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
385> 建议在页面销毁时,即onDestory回调中,取消数据订阅,避免不必要的性能开销。
386
387
388## sensor.unsubscribeHeartRate
389
390unsubscribeHeartRate(): void
391
392取消订阅心率。
393
394**系统能力**:SystemCapability.Sensors.Sensor
395
396**需要权限**:ohos.permission.READ_HEALTH_DATA
397
398**示例:**
399
400```
401sensor.unsubscribeHeartRate();
402```
403
404## sensor.subscribeOnBodyState
405
406subscribeOnBodyState(Object): void
407
408订阅设备佩戴状态。针对同一个应用,多次点击调用时,会覆盖前面的调用效果,即仅最后一次调用生效。
409
410**系统能力**:SystemCapability.Sensors.Sensor
411
412**参数:**
413
414| 参数名     | 类型       | 必填   | 说明            |
415| ------- | -------- | ---- | ------------- |
416| success | Function | 是    | 穿戴状态改变后的回调函数。 |
417| fail    | Function | 否    | 接口调用失败的回调函数。  |
418
419success返回值:
420
421| 参数名   | 类型      | 说明     |
422| ----- | ------- | ------ |
423| value | boolean | 是否已佩戴。 |
424
425**示例:**
426
427```
428sensor.subscribeOnBodyState({
429  success: function(ret) {
430    console.log('get on-body state value:' + ret.value);
431  },
432  fail: function(data, code) {
433    console.log('Subscription failed. Code: ' + code + '; Data: ' + data);
434  },
435});
436```
437
438> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
439> 建议在页面销毁时,即onDestory回调中,取消数据订阅,避免不必要的性能开销。
440
441## sensor.unsubscribeOnBodyState
442
443unsubscribeOnBodyState(): void
444
445取消订阅设备佩戴状态。
446
447**系统能力**:SystemCapability.Sensors.Sensor
448
449**示例:**
450
451```
452sensor.unsubscribeOnBodyState();
453```
454
455## sensor.getOnBodyState
456
457getOnBodyState(Object): void
458
459获取设备佩戴状态。
460
461**系统能力**:SystemCapability.Sensors.Sensor
462
463**参数:**
464
465| 参数名      | 类型       | 必填   | 说明           |
466| -------- | -------- | ---- | ------------ |
467| success  | Function | 否    | 接口调用成功的回调函数。 |
468| fail     | Function | 否    | 接口调用失败的回调函数。 |
469| complete | Function | 否    | 接口调用结束的回调函数。 |
470
471success返回值:
472
473| 参数名   | 类型      | 说明     |
474| ----- | ------- | ------ |
475| value | boolean | 是否已佩戴。 |
476
477**示例:**
478
479```
480sensor.getOnBodyState({
481  success: function(ret) {
482    console.log('on body state: ' + ret.value);
483  },
484  fail: function(data, code) {
485    console.log('Subscription failed. Code: ' + code + '; Data: ' + data);
486  },
487});
488```
489
490## sensor.subscribeDeviceOrientation<sup>6+</sup>
491
492subscribeDeviceOrientation(interval: string, success: (data: DeviceOrientationResponse), fail?: (data: string, code: number)): void
493
494观察设备方向传感器数据变化。
495
496针对同一个应用,多次点击调用时,会覆盖前面的调用效果,即仅最后一次调用生效;针对同一个方法内,不支持多次调用。
497
498**系统能力**:SystemCapability.Sensors.Sensor
499
500**参数:**
501
502| 参数名      | 类型       | 必填   | 说明                                       |
503| -------- | -------- | ---- | ---------------------------------------- |
504| interval | string   | 是    | 频率参数,设备方向传感器的回调函数执行频率。<br/>默认为normal,可选值有:<br/>-&nbsp;game:极高的回调频率,20ms/次,适用于游戏。<br/>-&nbsp;ui:较高的回调频率,60ms/次,适用于UI更新。<br/>-&nbsp;normal:普通的回调频率,200ms/次,低功耗。 |
505| success  | Function | 是    | 感应到设备方向传感器数据变化后的回调函数。                    |
506| fail     | Function | 否    | 接口调用失败的回调函数。                             |
507
508 success返回值:
509| 参数名   | 类型     | 说明                                       |
510| ----- | ------ | ---------------------------------------- |
511| alpha | number | 当设备坐标&nbsp;X/Y&nbsp;和地球&nbsp;X/Y&nbsp;重合时,绕着&nbsp;Z&nbsp;轴转动的夹角为&nbsp;alpha。 |
512| beta  | number | 当设备坐标&nbsp;Y/Z&nbsp;和地球&nbsp;Y/Z&nbsp;重合时,绕着&nbsp;X&nbsp;轴转动的夹角为&nbsp;beta。 |
513| gamma | number | 当设备&nbsp;X/Z&nbsp;和地球&nbsp;X/Z&nbsp;重合时,绕着&nbsp;Y&nbsp;轴转动的夹角为&nbsp;gamma。 |
514
515**示例:**
516
517```
518sensor.subscribeDeviceOrientation({
519  interval: 'normal',
520  success: function(ret) {
521    console.log('Alpha data: ' + ret.alpha);
522    console.log('Beta data: ' + ret.beta);
523    console.log('Gamma data: ' + ret.gamma);
524  },
525  fail: function(data, code) {
526    console.error('Subscription failed. Code: ' + code + '; Data: ' + data);
527  }
528});
529```
530
531> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
532> 建议在页面销毁时,即onDestory回调中,取消数据订阅,避免不必要的性能开销。
533
534## sensor.unsubscribeDeviceOrientation<sup>6+</sup>
535
536unsubscribeDeviceOrientation(): void
537
538取消订阅设备方向传感器数据。
539
540**系统能力**:SystemCapability.Sensors.Sensor
541
542**示例:**
543
544```
545sensor.unsubscribeDeviceOrientation();
546```
547
548## sensor.subscribeGyroscope<sup>6+</sup>
549
550subscribeGyroscope(interval: string, success: (data: GyroscopeResponse), fail?: (data: string, code: number)): void
551
552观察陀螺仪数据变化。
553
554针对同一个应用,多次点击调用时,会覆盖前面的调用效果,即仅最后一次调用生效;针对同一个方法内,不支持多次调用。
555
556**系统能力**:SystemCapability.Sensors.Sensor
557
558**需要权限**:ohos.permission.GYROSCOPE,该权限为系统权限
559
560**参数:**
561
562| 参数名      | 类型       | 必填   | 说明                                       |
563| -------- | -------- | ---- | ---------------------------------------- |
564| interval | string   | 是    | 频率参数,陀螺仪的回调函数执行频率。<br/>默认为normal,可选值有:<br/>-&nbsp;game:极高的回调频率,20ms/次,适用于游戏。<br/>-&nbsp;ui:较高的回调频率,60ms/次,适用于UI更新。<br/>-&nbsp;normal:普通的回调频率,200ms/次,低功耗。 |
565| success  | Function | 是    | 感应到陀螺仪数据变化后的回调函数。                        |
566| fail     | Function | 否    | 接口调用失败的回调函数。                             |
567
568success返回值:
569
570| 参数名  | 类型     | 说明        |
571| ---- | ------ | --------- |
572| x    | number | x轴的旋转角速度。 |
573| y    | number | y轴的旋转角速度。 |
574| z    | number | z轴的旋转角速度。 |
575
576**示例:**
577
578```
579sensor.subscribeGyroscope({
580  interval: 'normal',
581  success: function(ret) {
582    console.log('X-axis data: ' + ret.x);
583    console.log('Y-axis data: ' + ret.y);
584    console.log('Z-axis data: ' + ret.z);
585  },
586  fail: function(data, code) {
587    console.error('Subscription failed. Code: ' + code + '; data: ' + data);
588  }
589});
590```
591
592> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
593> 建议在页面销毁时,即onDestory回调中,取消数据订阅,避免不必要的性能开销。
594
595## sensor.unsubscribeGyroscope<sup>6+</sup>
596
597unsubscribeGyroscope(): void
598
599取消订阅陀螺仪数据。
600
601**系统能力**:SystemCapability.Sensors.Sensor
602
603**需要权限**:ohos.permission.GYROSCOPE,该权限为系统权限
604
605**示例:**
606
607```
608sensor.unsubscribeGyroscope();
609```
610