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| ohos.sensor | sensor.getSensorList(callback: AsyncCallback\<Array\<Sensor>>): void| 获取设备上的所有传感器信息 | 19 20 21## 开发步骤 22 23开发步骤以加速度传感器ACCELEROMETER为例。 24 251. 导入模块。 26 27 ```ts 28 import sensor from '@ohos.sensor'; 29 import { BusinessError } from '@ohos.base'; 30 ``` 31 322. 查询设备支持的所有传感器的参数。 33 34 ```ts 35 sensor.getSensorList((error: BusinessError, data: Array<sensor.Sensor>) => { 36 if (error) { 37 console.info('getSensorList failed'); 38 } else { 39 console.info('getSensorList success'); 40 for (let i = 0; i < data.length; i++) { 41 console.info(JSON.stringify(data[i])); 42 } 43 } 44 }); 45 ``` 46 47 ![输入图片说明](figures/001.png) 48 49 可以看到该传感器支持的最小采样周期为5000000纳秒,支持的最大采样周期是200000000纳秒,传感器上报周期interval应该设置在该范围内。 50 513. 检查是否已经配置相应权限,具体配置方式请参考[权限申请声明](../security/accesstoken-guidelines.md)。 52 534. 注册监听。可以通过on()和once()两种接口监听传感器的调用结果。 54 55- 通过on()接口,实现对传感器的持续监听,传感器上报周期interval设置为100000000纳秒。 56 57 ```ts 58 sensor.on(sensor.SensorId.ACCELEROMETER, (data: sensor.AccelerometerResponse) => { 59 console.info("Succeeded in obtaining data. x: " + data.x + " y: " + data.y + " z: " + data.z); 60 }, { interval: 100000000 }); 61 ``` 62 63 ![输入图片说明](figures/002.png) 64 65- 通过once()接口,实现对传感器的一次监听。 66 67 ```ts 68 sensor.once(sensor.SensorId.ACCELEROMETER, (data: sensor.AccelerometerResponse) => { 69 console.info("Succeeded in obtaining data. x: " + data.x + " y: " + data.y + " z: " + data.z); 70 }); 71 ``` 72 73 ![输入图片说明](figures/003.png) 74 755. 取消持续监听。 76 77 ```ts 78 sensor.off(sensor.SensorId.ACCELEROMETER); 79 ```