<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
};
评论说这个枚举与<hardware/sensor.h>
同步(未公开,它是android源码的一部分)。
但在<hardware/sensor.h>
我找到了values更多有用的传感器,如压力,温度和湿度传感器:
#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)
为什么某些传感器未在<android/sensor.h>
中列出?使用它安全便携吗?
答案 0 :(得分:6)
目前使用<hardware/sensor.h>
中的常量是绝对安全的,因为SensorManager
使用来自系统范围ISensorServer
的数据填充其内部传感器列表,而无需重新映射类型值。并且ISensorServer
使用<hardware/sensor.h>
常量。
我认为NDK API公开约束类型集只是因为它暂时没有更新。
P.S。当然,如果将来出现某种映射,事情就会被打破,但IMO AOSP会保持不变。