• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# 传感器开发指导
2
3
4## 场景介绍
5
6- 通过指南针传感器数据,感知用户设备当前的朝向,从而达到为用户指明方向的目的。
7
8- 通过接近光传感器数据,感知距离遮挡物的距离,使设备能够自动亮灭屏,达到防误触目的。
9
10- 通过气压计传感器数据,准确的判断设备当前所处的海拔。
11
12- 通过环境光传感器数据,设备能够实现背光自动调节。
13
14- 通过霍尔传感器数据,设备实现皮套功能等。
15
16- 通过心率传感器数据,感知用户当前的心率。
17
18- 通过计步传感器数据,可以统计用户的步数。
19
20- 通过佩戴检测传感器,可以检测用户是否佩戴。
21
22
23## 接口说明
24
25| 模块 | 接口名 | 描述 |
26| -------- | -------- | -------- |
27| ohos.sensor | sensor.on(sensorType, callback:AsyncCallback<Response>): void | 持续监听传感器数据变化 |
28| ohos.sensor | sensor.once(sensorType, callback:AsyncCallback<Response>): void | 获取一次传感器数据变化 |
29| ohos.sensor | sensor.off(sensorType, callback?:AsyncCallback<void>): void | 注销传感器数据的监听 |
30
31
32## 开发步骤
33
341. 获取设备上传感器的数据前,需要检查是否已经配置请求相应的权限。 <br>
35     系统提供的传感器权限有:
36   - ohos.permission.ACCELEROMETER
37
38   - ohos.permission.GYROSCOPE
39
40   - ohos.permission.ACTIVITY_MOTION
41
42   - ohos.permission.READ_HEALTH_DATA
43
44   具体配置方式请参考[权限申请声明](../security/accesstoken-guidelines.md)。
45
462. 持续监听传感器数据变化。
47
48   ```
49   import sensor from "@ohos.sensor";
50   sensor.on(sensor.SensorType.SENSOR_TYPE_ID_ACCELEROMETER, function(data){
51      console.info("Data obtained successfully. x: " + data.x + "y: " + data.y + "z: " + data.z);// 获取数据成功
52   });
53   ```
54
55   以SensorType为SENSOR_TYPE_ID_ACCELEROMETER为例展示运行结果,持续监听传感器接口的结果如下图所示:
56
57   ![zh-cn_image_0000001241693881](figures/zh-cn_image_0000001241693881.png)
58
593. 注销传感器数据监听。
60
61   ```
62   import sensor from "@ohos.sensor";
63   sensor.off(sensor.SensorType.SENSOR_TYPE_ID_ACCELEROMETER);
64   ```
65
66   以SensorType为SENSOR_TYPE_ID_ACCELEROMETER为例展示运行结果,注销传感器成功结果如下图所示:
67
68   ![zh-cn_image_0000001196654004](figures/zh-cn_image_0000001196654004.png)
69
704. 获取一次传感器数据变化。
71
72   ```
73   import sensor from "@ohos.sensor";
74   sensor.once(sensor.SensorType.SENSOR_TYPE_ID_ACCELEROMETER, function(data) {
75      console.info("Data obtained successfully. x: " + data.x + "y: " + data.y + "z: " + data.z);// 获取数据成功
76   });
77   ```
78
79   以SensorType为SENSOR_TYPE_ID_ACCELEROMETER为例展示运行结果,获取数据成功日志如下图所示:
80
81   ![zh-cn_image_0000001241733907](figures/zh-cn_image_0000001241733907.png)
82
83   若接口调用不成功,建议使用try/catch语句捕获代码中可能出现的错误信息。例如:
84
85    ```
86   import sensor from "@ohos.sensor";
87    try {
88      sensor.once(sensor.SensorType.SENSOR_TYPE_ID_ACCELEROMETER, function(data) {
89          console.info("Data obtained successfully. x: " + data.x + "y: " + data.y + "z: " + data.z);// 获取数据成功
90      });
91    } catch (error) {
92      console.error("Get sensor data fail");
93    }
94    ```
95## 相关实例
96
97针对传感器开发,有以下相关实例可供参考:
98
99- [`Sensor`:传感器(eTS)(API8)](https://gitee.com/openharmony/applications_app_samples/tree/samples_monthly_0730/device/Sensor)