安卓传感器类型(来自安卓开源网)
目录
传感器坐标轴
许多传感器的传感器事件值在相对于设备静止的特定坐标系中表示。
移动设备坐标轴
移动设备坐标轴
Sensor API 仅与屏幕的自然方向相关(当设备的屏幕方向更改时,坐标轴不会发生交换)。
汽车坐标轴
在 Android Automotive 实现中,坐标轴相对于车身坐标系进行定义:
图 2. Sensor API 使用的坐标系(相对于汽车设备)。
X 轴沿车辆右侧延伸
Y 轴沿车架前方延伸
Z 轴沿车架顶部延伸
坐标系的原点位于车辆后轴的中心。从坐标轴的正方向观察时,正旋转方向为逆时针方向。因此,当车辆向左转时,z 轴的陀螺仪转速应该为正值。
基础传感器
基础传感器类型以其代表的物理传感器命名。这些传感器会转发来自单个物理传感器的数据(与通过其他传感器生成数据的复合传感器相反)。基础传感器类型的示例包括:
SENSOR_TYPE_ACCELEROMETER
SENSOR_TYPE_GYROSCOPE
SENSOR_TYPE_MAGNETOMETER
注意:有关 Android 传感器类型的详细信息,请查看以下部分。
但是,基础传感器不等同于其底层物理传感器,也不得与其相混淆。来自基础传感器的数据不是物理传感器的原始输出信息,因为数据已进行了校正(如偏差补偿和温度补偿)。
例如,在以下使用情况下,基础传感器的特性可能与其底层物理传感器的特性有所不同:
额定偏差范围为 1 度/秒的陀螺仪芯片。
在出厂校准后,通过应用温度补偿和偏差补偿,使 Android 传感器的实际偏差得到降低,最终偏差可能低于 0.01 度/秒。
在此情况下,即使底层传感器的数据表显示偏差为 1 度/秒,我们仍认为 Android 传感器的偏差低于 0.01 度/秒。
功耗为 100 uW 的气压计。
由于生成的数据需要从芯片传输到 SoC,因此从气压计 Android 传感器收集数据的实际功耗可能会高得多,例如 1000 uW。
在此情况下,即使在气压计芯片引线上测得的功耗为 100 uW,我们仍认为 Android 传感器的功耗为 1000 uW。
校准后功耗为 100 uW 的磁力计(但校准时的功耗更高)。
其校准程序可能需要激活陀螺仪(消耗 5000 uW),并运行一些算法(额外消耗 900 uW)。
在此情况下,我们认为(磁力计)Android 传感器的最大功耗为 6000 uW。
在此情况下,平均功耗是更为实用的测量指标,系统会通过 HAL 在传感器静态特性中报告平均功耗。
加速度计
报告模式:连续模式
getDefaultSensor(SENSOR_TYPE_ACCELEROMETER)
会返回一个非唤醒传感器
加速度计传感器可报告设备沿 3 个传感器坐标轴的加速度。测量的加速度包括物理加速度(速度变化)和重力加速度。测量结果在 sensor_event_t.acceleration 的 x、y 和 z 字段中报告。
所有值均采用国际单位制单位 (m/s^2),测量结果为设备加速度减去沿 3 个传感器坐标轴的重力加速度。
示例如下:
自由落体时,(x, y, z) 的范数应接近于 0。
当设备平放在桌子上并从其左侧向右推动时,x 轴加速度值为正。
当设备平放在桌子上时,z 轴上的加速度值为 +9.81,相当于设备的加速度 (0 m/s^2) 减去重力加速度 (-9.81 m/s^2)。
当设备平放在桌子上并向上抬起时,加速度值大于 +9.81,相当于设备的加速度 (+A m/s^2) 减去重力加速度 (-9.81 m/s^2)。
读数根据以下参数进行校准:
温度补偿
在线偏差校准
在线尺度校准
仅当传感器已禁用时,才可更新偏差校准和尺度校准,以避免流式传输时出现值激增。
加速度计还通过 sensors_event_t.acceleration.status 报告其预测的读数精度。要详细了解此字段的可能值,请参阅 SensorManager 的 SENSOR_STATUS_* 常量。