为什么 <android/sensor.h> 中缺少某些传感器的枚举值?使用它们安全吗?
Why enum values for some sensors are missing from <android/sensor.h>? Is it safe to use them?
<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>
中列出?使用它们安全且便携吗?
目前使用 <hardware/sensor.h>
中的常量是绝对安全的,因为 SensorManager
使用来自系统范围 ISensorServer
的数据填充其内部传感器列表,而无需对类型值进行任何重新映射。 ISensorServer
使用 <hardware/sensor.h>
常量。
我猜 NDK API 公开受限类型集只是因为它有一段时间没有更新了。
P.S。当然,如果将来出现某种映射,事情会被破坏,但 IMO AOSP 将保持不变。
<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>
中列出?使用它们安全且便携吗?
目前使用 <hardware/sensor.h>
中的常量是绝对安全的,因为 SensorManager
使用来自系统范围 ISensorServer
的数据填充其内部传感器列表,而无需对类型值进行任何重新映射。 ISensorServer
使用 <hardware/sensor.h>
常量。
我猜 NDK API 公开受限类型集只是因为它有一段时间没有更新了。
P.S。当然,如果将来出现某种映射,事情会被破坏,但 IMO AOSP 将保持不变。