鴻蒙OS 傳感器概述

2020-09-18 15:47 更新

基本概念

HarmonyOS 傳感器是應(yīng)用訪問底層硬件傳感器的一種設(shè)備抽象概念。開發(fā)者根據(jù)傳感器提供的 Sensor API,可以查詢設(shè)備上的傳感器,訂閱傳感器的數(shù)據(jù),并根據(jù)傳感器數(shù)據(jù)定制相應(yīng)的算法,開發(fā)各類應(yīng)用,比如指南針、運動健康、游戲等。

根據(jù)傳感器的用途,可以將傳感器分為六大類:運動類傳感器、環(huán)境類傳感器、方向類傳感器、光線類傳感器、健康類傳感器、其他類傳感器(如霍爾傳感器),每一大類傳感器包含不同類型的傳感器,某種類型的傳感器可能是單一的物理傳感器,也可能是由多個物理傳感器復(fù)合而成。傳感器列表如[圖1]所示。

分類 API類名 傳感器類型 中文描述 說明 主要用途
運動類 ohos.sensor.agent.CategoryMotionAgent SENSOR_TYPE_ACCELEROMETER 加速度傳感器 測量三個物理軸(x、y 和 z)上,施加在設(shè)備上的加速度(包括重力加速度),單位 : m/s2 檢測運動狀態(tài)
SENSOR_TYPE_ACCELEROMETER_UNCALIBRATED 未校準(zhǔn)加速度傳感器 測量三個物理軸(x、y 和 z)上,施加在設(shè)備上的未校準(zhǔn)的加速度(包括重力加速度),單位 : m/s2 檢測加速度偏差估值
SENSOR_TYPE_LINEAR_ACCELERATION 線性加速度傳感器 測量三個物理軸(x、y 和 z)上,施加在設(shè)備上的線性加速度(不包括重力加速度),單位 : m/s2 檢測每個單軸方向上的線性加速度
SENSOR_TYPE_GRAVITY 重力傳感器 測量三個物理軸(x、y 和 z)上,施加在設(shè)備上的重力加速度,單位 : m/s2 測量重力大小
SENSOR_TYPE_GYROSCOPE 陀螺儀傳感器 測量三個物理軸(x、y 和 z)上,設(shè)備的旋轉(zhuǎn)角速度,單位 : rad/s 測量旋轉(zhuǎn)的角速度
SENSOR_TYPE_GYROSCOPE_UNCALIBRATED 未校準(zhǔn)陀螺儀傳感器 測量三個物理軸(x、y 和 z)上,設(shè)備的未校準(zhǔn)旋轉(zhuǎn)角速度,單位 : rad/s 測量旋轉(zhuǎn)的角速度及偏差估值
SENSOR_TYPE_SIGNIFICANT_MOTION 大幅度動作傳感器 測量三個物理軸(x、y 和 z)上,設(shè)備是否存在大幅度運動;如果取值為1則代表存在大幅度運動,取值為0則代表沒有大幅度運動 用于檢測設(shè)備是否存在大幅度運動
SENSOR_TYPE_DROP_DETECTION 跌落檢測傳感器 檢測設(shè)備的跌落狀態(tài);如果取值為1則代表發(fā)生跌落,取值為0則代表沒有發(fā)生跌落 用于檢測設(shè)備是否發(fā)生了跌落
SENSOR_TYPE_PEDOMETER_DETECTION 計步器檢測傳感器 檢測用戶的計步動作;如果取值為1則代表用戶產(chǎn)生了計步行走的動作;取值為0則代表用戶沒有發(fā)生運動 用于檢測用戶是否有計步的動作
SENSOR_TYPE_PEDOMETER 計步器傳感器 統(tǒng)計用戶的行走步數(shù) 用于提供用戶行走的步數(shù)數(shù)據(jù)
環(huán)境類 ohos.sensor.agent.CategoryEnvironmentAgent SENSOR_TYPE_AMBIENT_TEMPERATURE 環(huán)境溫度傳感器 測量環(huán)境溫度,單位 : 攝氏度 (°C) 測量環(huán)境溫度
SENSOR_TYPE_MAGNETIC_FIELD 磁場傳感器 測量三個物理軸向(x、y、z)上,環(huán)境地磁場,單位 : μT 創(chuàng)建指南針
SENSOR_TYPE_MAGNETIC_FIELD_UNCALIBRATED 未校準(zhǔn)磁場傳感器 測量三個物理軸向(x、y、z)上,未校準(zhǔn)環(huán)境地磁場,單位 : μT 測量地磁偏差估值
SENSOR_TYPE_HUMIDITY 濕度傳感器 測量環(huán)境的相對濕度,以百分比 (%) 表示 監(jiān)測露點、絕對濕度和相對濕度
SENSOR_TYPE_BAROMETER 氣壓計傳感器 測量環(huán)境氣壓,單位 : hPa 或 mbar 測量環(huán)境氣壓
SENSOR_TYPE_SAR 比吸收率傳感器 測量比吸收率,單位:W/kg 測量設(shè)備的電磁波能量吸收比值。
方向類 ohos.sensor.agent.CategoryOrientationAgent SENSOR_TYPE_6DOF 6自由度傳感器 測量上下、前后、左右方向上的位移,單位:m或mm;測量俯仰、偏擺、翻滾的角度,單位:rad 檢測設(shè)備的三個平移自由度以及旋轉(zhuǎn)自由度,用于目標(biāo)定位追蹤,如:VR
SENSOR_TYPE_SCREEN_ROTATION 屏幕旋轉(zhuǎn)傳感器 檢測設(shè)備屏幕的旋轉(zhuǎn)狀態(tài) 用于檢測設(shè)備屏幕是否發(fā)生了旋轉(zhuǎn)
SENSOR_TYPE_DEVICE_ORIENTATION 設(shè)備方向傳感器 測量設(shè)備的旋轉(zhuǎn)方向,單位:rad 用于檢測設(shè)備旋轉(zhuǎn)方向的角度值
SENSOR_TYPE_ORIENTATION 方向傳感器 測量設(shè)備圍繞所有三個物理軸(x、y、z)旋轉(zhuǎn)的角度值,單位:rad 用于提供屏幕旋轉(zhuǎn)的3個角度值
SENSOR_TYPE_ROTATION_VECTOR 旋轉(zhuǎn)矢量傳感器 測量設(shè)備旋轉(zhuǎn)矢量,復(fù)合傳感器:由加速度傳感器、磁場傳感器、陀螺儀傳感器合成 檢測設(shè)備相對于東北天坐標(biāo)系的方向
SENSOR_TYPE_GAME_ROTATION_VECTOR 游戲旋轉(zhuǎn)矢量傳感器 測量設(shè)備游戲旋轉(zhuǎn)矢量,復(fù)合傳感器:由加速度傳感器、陀螺儀傳感器合成 應(yīng)用于游戲場景
SENSOR_TYPE_GEOMAGNETIC_ROTATION_VECTOR 地磁旋轉(zhuǎn)矢量傳感器 測量設(shè)備地磁旋轉(zhuǎn)矢量,復(fù)合傳感器:由加速度傳感器、磁場傳感器合成 用于測量地磁旋轉(zhuǎn)矢量
光線類 ohos.sensor.agent.CategoryLightAgent SENSOR_TYPE_PROXIMITY 接近光傳感器 測量可見物體相對于設(shè)備顯示屏的接近或遠(yuǎn)離狀態(tài) 通話中設(shè)備相對人的位置
SENSOR_TYPE_TOF ToF傳感器 測量光在介質(zhì)中行進(jìn)一段距離所需的時間 人臉識別
SENSOR_TYPE_AMBIENT_LIGHT 環(huán)境光傳感器 測量設(shè)備周圍光線強(qiáng)度,單位:lux 自動調(diào)節(jié)屏幕亮度,檢測屏幕上方是否有遮擋
SENSOR_TYPE_COLOR_TEMPERATURE 色溫傳感器 測量環(huán)境中的色溫 應(yīng)用于設(shè)備的影像處理
SENSOR_TYPE_COLOR_RGB RGB顏色傳感器 測量環(huán)境中的RGB顏色值 通過三原色的反射比率實現(xiàn)顏色檢測
SENSOR_TYPE_COLOR_XYZ XYZ顏色傳感器 測量環(huán)境中的XYZ顏色值 用于辨識真色色點,還原色彩更真實
健康類 ohos.sensor.agent.CategoryBodyAgent SENSOR_TYPE_HEART_RATE 心率傳感器 測量用戶的心率數(shù)值 用于提供用戶的心率健康數(shù)據(jù)
SENSOR_TYPE_WEAR_DETECTION 佩戴檢測傳感器 檢測用戶是否佩戴 用于檢測用戶是否佩戴智能穿戴
其他類 ohos.sensor.agent.CategoryOtherAgent SENSOR_TYPE_HALL 霍爾傳感器 測量設(shè)備周圍是否存在磁力吸引 設(shè)備的皮套模式
SENSOR_TYPE_GRIP_DETECTOR 手握檢測傳感器 檢測設(shè)備是否有抓力施加 用于檢查設(shè)備側(cè)邊是否被手握住
SENSOR_TYPE_MAGNET_BRACKET 磁鐵支架傳感器 檢測設(shè)備是否被磁吸 檢測設(shè)備是否位于車內(nèi)或者室內(nèi)
SENSOR_TYPE_PRESSURE_DETECTOR 按壓檢測傳感器 檢測設(shè)備是否有壓力施加 用于檢測設(shè)備的正上方是否存在按壓

運作機(jī)制

HarmonyOS 傳感器包含如下四個模塊:Sensor API、Sensor Framework、Sensor Service、HD_IDL 層。

圖1 HarmonyOS 傳感器

img

  • Sensor API:提供傳感器的基礎(chǔ) API,主要包含查詢傳感器的列表、訂閱/取消傳感器的數(shù)據(jù)、執(zhí)行控制命令等,簡化應(yīng)用開發(fā)。
  • Sensor Framework:主要實現(xiàn)傳感器的訂閱管理,數(shù)據(jù)通道的創(chuàng)建、銷毀、訂閱與取消訂閱,實現(xiàn)與SensorService 的通信。
  • Sensor Service:主要實現(xiàn) HD_IDL 層數(shù)據(jù)接收、解析、分發(fā),前后臺的策略管控,對該設(shè)備 Sensor 的管理;Sensor 權(quán)限管控等。
  • HD_IDL 層:對不同的 FIFO、頻率進(jìn)行策略選擇;以及對不同設(shè)備(車機(jī)、智能穿戴、智慧屏等)的適配。

約束與限制

  1. 針對某些傳感器,開發(fā)者需要請求相應(yīng)的權(quán)限,才能獲取到相應(yīng)傳感器的數(shù)據(jù)。

傳感器 HarmonyOS 權(quán)限名 敏感級別 權(quán)限描述
加速度傳感器、加速度未校準(zhǔn)傳感器、線性加速度傳感器 ohos.permission.ACCELEROMETER system_grant 允許訂閱Motion組對應(yīng)的加速度傳感器的數(shù)據(jù)
陀螺儀傳感器、陀螺儀未校準(zhǔn)傳感器 ohos.permission.GYROSCOPE system_grant 允許訂閱 Motion 組對應(yīng)的陀螺儀傳感器的數(shù)據(jù)
計步器 ohos.permission.ACTIVITY_MOTION user_grant 允許訂閱運動狀態(tài)
心率 ohos.permission.READ_HEALTH_DATA user_grant 允許讀取健康數(shù)據(jù)

  1. 傳感器數(shù)據(jù)訂閱和取消訂閱接口成對調(diào)用,當(dāng)不再需要訂閱傳感器數(shù)據(jù)時,開發(fā)者需要調(diào)用取消訂閱接口進(jìn)行資源釋放。
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號