为什么缺少某些传感器的枚举值? 使用它们是否安全?
似乎中缺少某些传感器的枚举值。
该文件定义了以下枚举:
/* * 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将保持不变。