为什么<android/sensor.h>缺少某些传感器的枚举值?使用它们是否安全?

Hol*_*Cat 3 c android sensor android-ndk

似乎缺少某些传感器的枚举值<android/sensor.h>.

该文件定义了以下枚举:

/*
 * Sensor types
 * (keep in sync with hardware/sensor.h)
 */

enum {
    ASENSOR_TYPE_ACCELEROMETER      = 1,
    ASENSOR_TYPE_MAGNETIC_FIELD     = 2,
    ASENSOR_TYPE_GYROSCOPE          = 4,
    ASENSOR_TYPE_LIGHT              = 5,
    ASENSOR_TYPE_PROXIMITY          = 8
};
Run Code Online (Sandbox Code Playgroud)

评论说这个枚举是同步的<hardware/sensor.h>(没有暴露,它是android源码的一部分).

但是<hardware/sensor.h>我发现了许多更有用的传感器的价值,如压力,温度和湿度传感器:

#define SENSOR_TYPE_ACCELEROMETER         (1) 
#define SENSOR_TYPE_GEOMAGNETIC_FIELD     (2) 
#define SENSOR_TYPE_ORIENTATION           (3)
#define SENSOR_TYPE_GYROSCOPE             (4)
#define SENSOR_TYPE_LIGHT                 (5)
#define SENSOR_TYPE_PRESSURE              (6)
#define SENSOR_TYPE_TEMPERATURE           (7)
#define SENSOR_TYPE_PROXIMITY             (8)
#define SENSOR_TYPE_GRAVITY               (9)
#define SENSOR_TYPE_LINEAR_ACCELERATION   (10)
#define SENSOR_TYPE_ROTATION_VECTOR       (11)
#define SENSOR_TYPE_RELATIVE_HUMIDITY     (12)
// ...
#define SENSOR_TYPE_HEART_BEAT            (31)
Run Code Online (Sandbox Code Playgroud)

为什么有些传感器没有列在<android/sensor.h>?使用它安全便携吗?

Ser*_*gio 6

目前,使用常量是绝对安全的,<hardware/sensor.h>因为使用SensorManager来自系统范围的数据填充其内部传感器列表,ISensorServer而无需重新映射类型值.并ISensorServer使用<hardware/sensor.h>常量.

我想NDK API只是暴露了约束类型集,因为它暂时没有更新.

PS当然,如果将来出现某种映射,事情将被破坏,但IMO AOSP将保持不变.