mirror of
https://gitee.com/openharmony/sensors_sensor
synced 2024-12-04 20:58:50 +00:00
e25fdbc6d7
Signed-off-by: h00514358 <huiyuehong@huawei.com>
11 KiB
Executable File
11 KiB
Executable File
Sensor组件
简介
传感器是指用于侦测环境中所发生事件或变化,并将此消息发送至其他电子设备(如中央处理器)的设备,通常由敏感组件和转换组件组成。传感器是实现物联网智能化的重要基石,为实现全场景智慧化战略,支撑“1+8+N”产品需求,需要构筑统一的传感器管理框架,达到为各产品/业务提供低时延、低功耗的感知数据的目的。根据用途可分为以下六大类:
- 运动类:加速度、陀螺仪、重力、线性加速度传感器等
- 姿态类:旋转矢量、方向传感器等
- 环境类:磁力计、气压、湿度传感器等
- 光线类:环境光、接近光、色温传感器等
- 健康类:心率、心跳传感器等
- 其它:霍尔传感器、手握传感器等
传感器架构图如下所示:
目录
sensor导入模块的示例代码如下:
/base/sensors/sensor
├── frameworks # 框架代码
│ └── native # sensor客户端代码
├── interfaces # 对外接口存放目录
│ ├── native # sensor native实现
│ └── plugin # Js API
├── sa_profile # 服务名称和服务的动态库的配置文件
├── services # 服务的代码目录
│ └── sensor # 传感器服务,包括加速度、陀螺仪等,上报传感器数据
└── utils # 公共代码,包括权限、通信等能力
约束
-
要使用传感器的功能,设备必须具有对应的传感器器件。
-
针对某些传感器,开发者需要请求相应的权限,才能获取到相应传感器的数据。
表 1 传感器权限列表
使用
本节以传感器 JS API为例,说明其提供的具体功能以及使用流程。
接口说明
传感器 JS API:监听传感器数据变化,如果多次调用该接口,则最后一次调用生效。JS API开放的能力如下:
表 2 JS API的主要接口
on(type: SensorType, callback: AsyncCallback<Response>, options?: Options) |
监听传感器数据变化。SensorType为支持订阅的传感器类型,callback表示订阅传感器的回调函数,options为设置传感器数据上报的时间间隔。 |
使用说明
- 导包。
- 注册并监听加速度传感器数据的变化。
- 取消订阅加速度传感器数据的变化。
- 注册并监听加速度传感器数据的变化一次。
示例代码:
//步骤1 导包
import sensor from '@ohos.sensor';
export default {
onCreate() {
//步骤2 监听传感器数据变化,并注册传感器类型
sensor.on(sensor.SENSOR_TYPE_ID_ACCELEROMETER, (error, data) => {
if (error) {
console.error("Failed to subscribe to acceleration data. Error code: " + error.code + "; message: " + error.message);
return;
}
console.info("Acceleration data obtained. x: " + data.x + "; y: " + data.y + "; z: " + data.z);
}, {'interval':200000000});
//步骤3 设置10秒后取消订阅传感器数据
setTimeout(function(){
sensor.off(sensor.SENSOR_TYPE_ID_ACCELEROMETER, function(error) {
if (error) {
console.error("Failed to unsubscribe from acceleration data. Error code: " + error.code + "; message: " + error.message);
return;
}
console.info("Succeeded in unsubscribe from sensor data");
});
} ,10000);
//步骤4 监听传感器数据变化一次,并注册传感器类型
sensor.once(sensor.SENSOR_TYPE_ID_ACCELEROMETER, (error, data) => {
if (error) {
console.error("Failed to subscribe to gravity data. Error code: " + error.code + "; message: " + error.message);
return;
}
console.info("Acceleration data obtained. x: " + data.x + "; y: " + data.y + "; z: " + data.z);
});
}
onDestroy() {
console.info('AceApplication onDestroy');
}
}
相关仓
泛Sensor服务子系统
sensors_sensor