Android传感器类型3?
问题描述:
我正在使用Android传感器。 <sensor.h>
具有:Android传感器类型3?
enum {
ASENSOR_TYPE_ACCELEROMETER = 1,
ASENSOR_TYPE_MAGNETIC_FIELD = 2,
ASENSOR_TYPE_GYROSCOPE = 4,
ASENSOR_TYPE_LIGHT = 5,
ASENSOR_TYPE_PROXIMITY = 8
};
当我转储与ASensorManager_getSensorList
传感器上的宏达埃沃,我得到:
SensorList: BMA150 3-axis Accelerometer (Bosh), 1
SensorList: AK8973 3-axis Magnetic field sensor (Asahi Kasei), 2
SensorList: AK8973 Orientation sensor (Asahi Kasei), 3
SensorList: CM3602 Proximity sensor (Capella Microsystems), 8
SensorList: CM3602 Light sensor (Capella Microsystems), 5
当我越过enums
到列表中,它出现传感器类型3是取向。
问题:方位传感器是否总是传感器类型3?或者它会根据制造商而改变?
编辑:下面是来自华硕TF-101平板电脑转储:
SensorList: MPL rotation vector (Invensense), 11
SensorList: MPL linear accel (Invensense), 10
SensorList: MPL gravity (Invensense), 9
SensorList: MPL Gyro (Invensense), 4
SensorList: MPL accel (Invensense), 1
SensorList: MPL magnetic field (Invensense), 2
SensorList: MPL Orientation (Invensense), 3
SensorList: Lite-On al3000a Ambient Light Sensor (Lite-On), 5
方向又是3,但也有一些额外的传感器。
编辑:下面是转储从泽基TBQG 1084B平板电脑:
SensorList: STK831x accelerometer (Sensortek) 1 10000 1.000000
无取向(只有1个传感器是一种便宜的,我想它的游戏)。
答
Enum为类型传感器设备可以有,每种类型应该始终在跨平台的数值相同。因此,无论设备类型或供应商是什么,如果有陀螺仪,那么总是应该报告为ASENSOR_TYPE_GYROSCOPE
,最后等于4
。如果您在设备上看到的陀螺仪报告有所不同,那么这是一个错误,即在该设备的低级驱动程序中,并且很可能会在下一次固件更新等情况下得到修复。
这些值必须在每个设备上保持不变,否则您的应用程序将无法真正起作用。如果由于可执行的二进制文件对数值进行操作而不是ENUM /定义等类型不统一,那么为传感器开发将会是一个巨大的痛苦。有ENUM的主要观点是使用它们而不是最终值来使你的代码更具可读性。它更清楚哪些代码做时,看到即
if(sensor == ASENSOR_TYPE_GYROSCOPE)
比
if(sensor == 4)
至于方向传感器和它的缺失ENUM注册 - 该传感器was deprecated in API8,你现在推荐使用磁场传感器和加速度计获得同等功能(see example implementation),所以这是最有可能的它从ENUM消失的原因。
它可能不同,但如果您使用Sensor.TYPE_ACCELEROMETER,它将是类似的,值可以更改。 – 2014-09-03 12:29:32