sensor-guidelines.md 3.5 KB
Newer Older
H
update  
HelloCrease 已提交
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 28
# 传感器开发指导


## 场景介绍

- 通过指南针传感器数据,感知用户设备当前的朝向,从而达到为用户指明方向的目的。

- 通过接近光传感器数据,感知距离遮挡物的距离,使设备能够自动亮灭屏,达到防误触目的。

- 通过气压计传感器数据,准确的判断设备当前所处的海拔。

- 通过环境光传感器数据,设备能够实现背光自动调节。

- 通过霍尔传感器数据,设备实现皮套功能等。

- 通过心率传感器数据,感知用户当前的心率。

- 通过计步传感器数据,可以统计用户的步数。

- 通过佩戴检测传感器,可以检测用户是否佩戴。


## 接口说明

| 模块 | 接口名 | 描述 |
| -------- | -------- | -------- |
| ohos.sensor | sensor.on(sensorType, callback:AsyncCallback<Response>): void | 持续监听传感器数据变化 |
| ohos.sensor | sensor.once(sensorType, callback:AsyncCallback<Response>): void | 获取一次传感器数据变化 |
H
h00514358 已提交
29
| ohos.sensor | sensor.off(sensorType, callback?:AsyncCallback<void>): void | 注销传感器数据的监听 |
H
update  
HelloCrease 已提交
30 31 32 33


## 开发步骤

H
h00514358 已提交
34 35 36 37 38 39 40 41 42 43 44
1. 获取设备上传感器的数据前,需要检查是否已经配置请求相应的权限。 <br>
     系统提供的传感器权限有:
   - ohos.permission.ACCELEROMETER

   - ohos.permission.GYROSCOPE

   - ohos.permission.ACTIVITY_MOTION

   - ohos.permission.READ_HEALTH_DATA

   具体配置方式请参考[权限申请声明](../security/accesstoken-guidelines.md)
C
cff-gite 已提交
45
   
H
update  
HelloCrease 已提交
46 47 48
2. 持续监听传感器数据变化。
  
   ```
H
h00514358 已提交
49 50 51 52
   import sensor from "@ohos.sensor";
   sensor.on(sensor.SensorType.SENSOR_TYPE_ID_ACCELEROMETER, function(data){
      console.info("Data obtained successfully. x: " + data.x + "y: " + data.y + "z: " + data.z);// 获取数据成功
   });
H
update  
HelloCrease 已提交
53
   ```
C
cff-gite 已提交
54
   
H
update  
HelloCrease 已提交
55
   以SensorType为SENSOR_TYPE_ID_ACCELEROMETER为例展示运行结果,持续监听传感器接口的结果如下图所示:
C
cff-gite 已提交
56
   
H
update  
HelloCrease 已提交
57 58 59 60 61
   ![zh-cn_image_0000001241693881](figures/zh-cn_image_0000001241693881.png)

3. 注销传感器数据监听。
  
   ```
H
h00514358 已提交
62 63
   import sensor from "@ohos.sensor";
   sensor.off(sensor.SensorType.SENSOR_TYPE_ID_ACCELEROMETER);
H
update  
HelloCrease 已提交
64
   ```
C
cff-gite 已提交
65
   
H
update  
HelloCrease 已提交
66
   以SensorType为SENSOR_TYPE_ID_ACCELEROMETER为例展示运行结果,注销传感器成功结果如下图所示:
C
cff-gite 已提交
67
   
H
update  
HelloCrease 已提交
68 69 70 71 72
   ![zh-cn_image_0000001196654004](figures/zh-cn_image_0000001196654004.png)

4. 获取一次传感器数据变化。
  
   ```
H
h00514358 已提交
73 74 75 76
   import sensor from "@ohos.sensor";
   sensor.once(sensor.SensorType.SENSOR_TYPE_ID_ACCELEROMETER, function(data) {
      console.info("Data obtained successfully. x: " + data.x + "y: " + data.y + "z: " + data.z);// 获取数据成功
   });
H
update  
HelloCrease 已提交
77
   ```
C
cff-gite 已提交
78
   
H
update  
HelloCrease 已提交
79
   以SensorType为SENSOR_TYPE_ID_ACCELEROMETER为例展示运行结果,获取数据成功日志如下图所示:
C
cff-gite 已提交
80
   
H
update  
HelloCrease 已提交
81
   ![zh-cn_image_0000001241733907](figures/zh-cn_image_0000001241733907.png)
82 83 84 85

   若接口调用不成功,建议使用try/catch语句捕获代码中可能出现的错误信息。例如:

    ```
H
h00514358 已提交
86
   import sensor from "@ohos.sensor";
87
    try {
H
h00514358 已提交
88 89
      sensor.once(sensor.SensorType.SENSOR_TYPE_ID_ACCELEROMETER, function(data) {
          console.info("Data obtained successfully. x: " + data.x + "y: " + data.y + "z: " + data.z);// 获取数据成功
90 91
      });
    } catch (error) {
H
h00514358 已提交
92
      console.error("Get sensor data fail");
93 94
    }
    ```
Z
zengyawen 已提交
95 96 97 98
## 相关实例

针对传感器开发,有以下相关实例可供参考:

99
- [`Sensor`:传感器(eTS)(API8)](https://gitee.com/openharmony/applications_app_samples/tree/master/device/Sensor)