我正在使用三星 Galaxy S3。当我检索到可用的传感器时:
我得到如下结果:
LSM330DLC 3-axis Accelerometer TYPE_ACCELEROMETER
AK8975C 3-axis Magnetic field sensor TYPE_MAGNETIC_FIELD
iNemoEngine Orientation sensor TYPE_ORIENTATION
CM36651 Light sensor TYPE_LIGHT
CM36651 Proximity sensor TYPE_PROXIMITY
LSM330DLC Gyroscope sensor TYPE_GYROSCOPE
iNemoEngine Gravity sensor TYPE_GRAVITY
iNemoEngine Linear Acceleration sensor-S/W TYPE_LINEAR_ACCELERATION
iNemoEngine Rotation_Vector sensor TYPE_ROTATION_VECTOR
LPS331AP Pressure Sensor TYPE_PRESSURE
Rotation Vector Sensor TYPE_ROTATION_VECTOR
Gravity Sensor - software sensor TYPE_GRAVITY
Linear Acceleration Sensor TYPE_LINEAR_ACCELERATION
Orientation Sensor TYPE_ORIENTATION
Corrected Gyroscope Sensor TYPE_GYROSCOPE
STMicroelectronics 似乎是默认传感器,谷歌公司和三星公司提供的传感器可能是辅助传感器。当我使用 getVendor() 方法时,它返回 STMicroelectronics(作为硬件默认传感器)和三星。但是当我注册两个传感器时,调用了 onSensorChanged(),它返回的方向值(俯仰、滚动和方位角)差别很大。
例如,我在相同的时间戳(相差几秒钟)获得了以下值。
pitch: roll: azimuth:
Samsung 0.5917465 -4.212 84.583
STMicroelectronics 0.0865345 -3.88854 356.825
知道为什么两者之间存在差异,或者我们应该始终监控硬件和软件传感器吗?