@ohos.sensor (传感器)

289 阅读3分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第34天,点击查看活动详情

@ohos.sensor (传感器)

要使用传感器数据,首先需要导入传感器模块

import sensor from '@ohos.sensor';

这个接口数据还是比较敏感的,所以需要添加权限

这个时候就需要在config.JSON或者module.json5中去配置

FA

"reqPermissions": [
  {
  "name": "ohos.permission.ACCELEROMETER"
  }
]

Stage

"requestPermissions": [
  {
   "name": "ohos.permission.ACCELEROMETER"
  }
]

接下来我们就来看一下传感器类型。

SensorType

表示要订阅或取消订阅的传感器类型。

系统能力:以下各项对应的系统能力均为SystemCapability.Sensors.Sensor

名称默认值说明
SENSOR_TYPE_ID_ACCELEROMETER1加速度传感器。
SENSOR_TYPE_ID_GYROSCOPE2陀螺仪传感器。
SENSOR_TYPE_ID_AMBIENT_LIGHT5环境光传感器。
SENSOR_TYPE_ID_MAGNETIC_FIELD6磁场传感器。
SENSOR_TYPE_ID_BAROMETER8气压计传感器。
SENSOR_TYPE_ID_HALL10霍尔传感器。
SENSOR_TYPE_ID_PROXIMITY12接近光传感器。
SENSOR_TYPE_ID_HUMIDITY13湿度传感器。
SENSOR_TYPE_ID_ORIENTATION256方向传感器。
SENSOR_TYPE_ID_GRAVITY257重力传感器。
SENSOR_TYPE_ID_LINEAR_ACCELERATION258线性加速度传感器。
SENSOR_TYPE_ID_ROTATION_VECTOR259旋转矢量传感器。
SENSOR_TYPE_ID_AMBIENT_TEMPERATURE260环境温度传感器。
SENSOR_TYPE_ID_MAGNETIC_FIELD_UNCALIBRATED261未校准磁场传感器。
SENSOR_TYPE_ID_GYROSCOPE_UNCALIBRATED263未校准陀螺仪传感器。
SENSOR_TYPE_ID_SIGNIFICANT_MOTION264有效运动传感器。
SENSOR_TYPE_ID_PEDOMETER_DETECTION265计步检测传感器。
SENSOR_TYPE_ID_PEDOMETER266计步传感器。
SENSOR_TYPE_ID_HEART_RATE278心率传感器。
SENSOR_TYPE_ID_WEAR_DETECTION280佩戴检测传感器。
SENSOR_TYPE_ID_ACCELEROMETER_UNCALIBRATED281未校准加速度计传感器。

Response

传感器数据的时间戳。

系统能力:以下各项对应的系统能力均为SystemCapability.Sensors.Sensor

名称参数类型可读可写说明
timestampnumber传感器数据上报的时间戳。

sensor.on

ACCELEROMETER

on(type: SensorType.SENSOR_TYPE_ID_ACCELEROMETER, callback: Callback,options?: Options): void

监听加速度传感器的数据变化。如果多次调用该接口,仅最后一次调用生效。

需要权限:ohos.permission.ACCELEROMETER

系统能力:SystemCapability.Sensors.Sensor

参数:

参数名类型必填说明
typeSensorType要订阅的加速度传感器类型为SENSOR_TYPE_ID_ACCELEROMETER。
callbackCallback<AccelerometerResponse>注册加速度传感器的回调函数,上报的数据类型为AccelerometerResponse。
optionsOptions可选参数列表,设置上报频率,默认值为200000000ns。

示例:

import sensor from '@ohos.sensor';
import deviceInfo from '@ohos.deviceInfo'
@Entry
@Component
struct Index {
  @State message: string = 'Hello World'
​
​
  build() {
    Row() {
      Column() {
        Text(this.message)
          .fontSize(30)
          .fontWeight(FontWeight.Bold).onClick(()=>{
          sensor.on(sensor.SensorType.SENSOR_TYPE_ID_ACCELEROMETER,function(data){
            console.info('X-coordinate component: ' + data.x);
            console.info('Y-coordinate component: ' + data.y);
            console.info('Z-coordinate component: ' + data.z);
       
          },
            {interval: 10000000}
          );
        })
      }
      .width('100%')
    }
    .height('100%')
  }
}

AccelerometerResponse

加速度传感器数据,继承于Response

系统能力:以下各项对应的系统能力均为SystemCapability.Sensors.Sensor

名称参数类型可读可写说明
xnumber施加在设备x轴的加速度,单位 : m/s2。
ynumber施加在设备y轴的加速度,单位 : m/s2。
znumber施加在设备z轴的加速度,单位 : m/s2。

PEDOMETER_DETECTION

on(type: SensorType.SENSOR_TYPE_ID_PEDOMETER_DETECTION, callback: Callback, options?: Options): void

监听计步检测传感器的数据变化。如果多次调用该接口,仅最后一次调用生效。

需要权限:ohos.permission.ACTIVITY_MOTION

系统能力:SystemCapability.Sensors.Sensor

AMBIENT_TEMPERATURE

on(type:SensorType.SENSOR_TYPE_ID_AMBIENT_TEMPERATURE,callback:Callback, options?: Options): void

监听环境温度传感器的数据变化。如果多次调用该接口,仅最后一次调用生效。

系统能力:SystemCapability.Sensors.Sensor

import sensor from '@ohos.sensor';
import deviceInfo from '@ohos.deviceInfo'
@Entry
@Component
struct Index {
  @State message: string = 'Hello '
​
​
  build() {
    Row() {
      Column() {
        Text(this.message)
          .fontSize(30)
          .fontWeight(FontWeight.Bold).onClick(()=>{
          sensor.on(sensor.SensorType.SENSOR_TYPE_ID_AMBIENT_TEMPERATURE,function(data){
            console.info('Temperature: ' + data.temperature);
         
          },
            {interval: 10000000}
          );
​
        })
      }
      .width('100%')
    }
    .height('100%')
  }
}

参考文档

developer.harmonyos.com/cn/docs/doc…