• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# 传感器开发指导
2
3
4## 场景介绍
5
6当设备需要获取传感器数据时,可以使用sensor模块,例如:通过订阅方向传感器数据感知用户设备当前的朝向,通过订阅计步传感器数据统计用户的步数等。
7
8详细的接口介绍请参考[Sensor接口](../reference/apis/js-apis-sensor.md)。
9
10
11## 接口说明
12
13| 模块 | 接口名 | 描述 |
14| -------- | -------- | -------- |
15| ohos.sensor | sensor.on(sensorId, callback:AsyncCallback<Response>): void | 持续监听传感器数据变化 |
16| ohos.sensor | sensor.once(sensorId, callback:AsyncCallback<Response>): void | 获取一次传感器数据变化 |
17| ohos.sensor | sensor.off(sensorId, callback?:AsyncCallback<void>): void | 注销传感器数据的监听 |
18
19
20## 开发步骤
21
221. 获取设备上传感器的数据前,需要检查是否已经配置请求相应的权限。 <br>
23     系统提供的传感器权限有:
24   - ohos.permission.ACCELEROMETER
25
26   - ohos.permission.GYROSCOPE
27
28   - ohos.permission.ACTIVITY_MOTION
29
30   - ohos.permission.READ_HEALTH_DATA
31
32   具体配置方式请参考[权限申请声明](../security/accesstoken-guidelines.md)。
33
342. 以下场景以加速度传感器ACCELEROMETER为例。展示持续监听传感器接口的调用结果。
35
36   ```js
37   import sensor from "@ohos.sensor";
38   sensor.on(sensor.SensorId.ACCELEROMETER, function(data){
39      console.info("Data obtained successfully. x: " + data.x + "y: " + data.y + "z: " + data.z);// 获取数据成功
40   });
41   ```
42
43
44   ![171e6f30-a8d9-414c-bafa-b430340305fb](figures/171e6f30-a8d9-414c-bafa-b430340305fb.png)
45
463. 注销传感器数据监听。
47
48   ```js
49   import sensor from "@ohos.sensor";
50   sensor.off(sensor.SensorId.ACCELEROMETER);
51   ```
52
53
54   ![65d69983-29f6-4381-80a3-f9ef2ec19e53](figures/65d69983-29f6-4381-80a3-f9ef2ec19e53.png)
55
564. 获取一次传感器数据变化。
57
58   ```js
59   import sensor from "@ohos.sensor";
60   sensor.once(sensor.SensorId.ACCELEROMETER, function(data) {
61      console.info("Data obtained successfully. x: " + data.x + "y: " + data.y + "z: " + data.z);// 获取数据成功
62   });
63   ```
64
65
66   ![db5d017d-6c1c-4a71-a2dd-f74b7f23239e](figures/db5d017d-6c1c-4a71-a2dd-f74b7f23239e.png)
67
68   若接口调用不成功,建议使用try/catch语句捕获代码中可能出现的错误信息。例如:
69
70    ```js
71   import sensor from "@ohos.sensor";
72    try {
73      sensor.once(sensor.SensorId.ACCELEROMETER, function(data) {
74          console.info("Data obtained successfully. x: " + data.x + "y: " + data.y + "z: " + data.z);// 获取数据成功
75      });
76    } catch (error) {
77      console.error("Get sensor data error, error:" + error.data, ", msg:", error.message);
78    }
79    ```
80## 相关实例
81
82针对传感器开发,有以下相关实例可供参考:
83
84- [`Sensor`:传感器(ArkTS)(API9)](https://gitee.com/openharmony/applications_app_samples/tree/OpenHarmony-3.2-Release/code/BasicFeature/DeviceManagement/Sensor)