# Sensor组件 - [简介](#section11660541593) - [目录](#section44981327519) - [约束](#section98068674513) - [使用](#section1581412211528) - [接口说明](#section15684191115524) - [使用说明](#section1543714111810) - [相关仓](#section96071132185310) ## 简介 传感器是指用于侦测环境中所发生事件或变化,并将此消息发送至其他电子设备(如中央处理器)的设备,通常由敏感组件和转换组件组成。传感器是实现物联网智能化的重要基石,为实现全场景智慧化战略,支撑“1+8+N”产品需求,需要构筑统一的传感器管理框架,达到为各产品/业务提供低时延、低功耗的感知数据的目的。根据用途可分为以下六大类: - 运动类:加速度、陀螺仪、重力、线性加速度传感器等 - 姿态类:旋转矢量、方向传感器等 - 环境类:磁力计、气压、湿度传感器等 - 光线类:环境光、接近光、色温传感器等 - 健康类:心率、心跳传感器等 - 其它:霍尔传感器、手握传感器等 传感器架构图如下所示: **图 1** Sensor架构图 ![](figures/zh-cn_image_0000001199027515.png) ## 目录 sensor导入模块的示例代码如下: ``` /base/sensors/sensor ├── frameworks # 框架代码 │ └── native # sensor客户端代码 ├── interfaces # 对外接口存放目录 │ ├── native # sensor native实现 │ └── plugin # Js API ├── sa_profile # 服务名称和服务的动态库的配置文件 ├── services # 服务的代码目录 │ └── sensor # 传感器服务,包括加速度、陀螺仪等,上报传感器数据 └── utils # 公共代码,包括权限、通信等能力 ``` ## 约束 - 要使用传感器的功能,设备必须具有对应的传感器器件。 - 针对某些传感器,开发者需要请求相应的权限,才能获取到相应传感器的数据。 **表 1** 传感器权限列表

传感器

权限名

敏感级别

权限描述

加速度传感器、加速度未校准传感器、线性加速度传感器

ohos.permission.ACCELEROMETER

system_grant

允许订阅加速度传感器的数据。

陀螺仪传感器、陀螺仪未校准传感器

ohos.permission.GYROSCOPE

system_grant

允许订阅陀螺仪传感器的数据。

计步器

ohos.permission.ACTIVITY_MOTION

user_grant

允许订阅运动状态。

心率传感器

ohos.permission.READ_HEALTH_DATA

user_grant

允许读取健康数据。

## 使用 本节以传感器 JS API为例,说明其提供的具体功能以及使用流程。 ### 接口说明 传感器 JS API:监听传感器数据变化,如果多次调用该接口,则最后一次调用生效。JS API开放的能力如下: **表 2** JS API的主要接口

接口名

描述

on(type: SensorType, callback: Callback<Response>, options?: Options)

监听传感器数据变化。SensorType为支持订阅的传感器类型,callback表示订阅传感器的回调函数,options为设置传感器数据上报的时间间隔。

once(type: SensorType, callback: Callback<Response>)

监听传感器数据变化一次。SensorType为支持订阅的传感器类型,callback表示订阅传感器的回调函数。

off(type: SensorType, callback: Callback<Response>)

取消订阅传感器数据。SensorType为支持的取消订阅的传感器类型,callback表示取消订阅传感器是否成功。

### 使用说明 1. 导包。 2. 注册并监听加速度传感器数据的变化。 3. 取消订阅加速度传感器数据的变化。 4. 注册并监听加速度传感器数据的变化一次。 示例代码: ``` //步骤1 导包 import sensor from '@ohos.sensor'; export default { onCreate() { //步骤2 监听传感器数据变化,并注册传感器类型 sensor.on(sensor.SensorType.SENSOR_TYPE_ID_ACCELEROMETER, (data) => { console.info("Acceleration data obtained. x: " + data.x + "; y: " + data.y + "; z: " + data.z); }, {'interval':200000000}); //步骤3 设置10秒后取消订阅传感器数据 sensor.off(sensor.SensorType.SENSOR_TYPE_ID_LINEAR_ACCELERATION); //步骤4 监听传感器数据变化一次,并注册传感器类型 sensor.once(sensor.SensorType.SENSOR_TYPE_ID_ACCELEROMETER, (data) => { console.info("Acceleration data obtained. x: " + data.x + "; y: " + data.y + "; z: " + data.z); }); } onDestroy() { console.info('AceApplication onDestroy'); } } ``` ## 相关仓 泛Sensor服务子系统 **sensors\_sensor** [sensors\_miscdevice](https://gitee.com/openharmony/sensors_miscdevice)