I am using a Samsung Galaxy S3. When I removed the available sensors:
I got the result as below:
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 appears to be the default, and the sensors provided by Google Inc and Samsung Inc may be secondary sensors. When I used the getVendor () method, it returned STMicroelectronics (which is the hardware standard sensor) and Samsung. But when I registered both sensors, onSensorChanged () is called, which with a large difference returned orientation values ββ(step, roll and azimuth).
For example, I received the following values ββat the same time stamp (with a difference of several seconds).
pitch: roll: azimuth: Samsung 0.5917465 -4.212 84.583 STMicroelectronics 0.0865345 -3.88854 356.825
Any idea on why there is a difference in both or should we always monitor hardware and software sensors?
source share