为什么缺少某些传感器的枚举值? 使用它们是否安全?

似乎中缺少某些传感器的枚举值。

该文件定义了以下枚举:

 /* * 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 }; 

评论说这个枚举与同步(它没有暴露,它是android源代码的一部分)。

但是在我发现了更多有用的传感器的值 ,如压力,温度和湿度传感器:

 #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) 

为什么有些传感器没有在列出? 使用它安全便携吗?

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

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

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