私はSamsungGalaxyS3を使用しています。利用可能なセンサーを取得したとき:
以下のような結果が得られました:
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がデフォルトのセンサーのようで、GoogleIncとSamsungIncが提供するセンサーがセカンダリセンサーである可能性があります。getVendor()メソッドを使用すると、STMicroelectronics(ハードウェアのデフォルトセンサー)とSamsungが返されました。しかし、両方のセンサーを登録すると、onSensorChanged()が呼び出され、方向の値(ピッチ、ロール、方位角)が大きく異なります。
たとえば、同じタイムスタンプで次の値を取得しました(数秒の差があります)。
pitch: roll: azimuth:
Samsung 0.5917465 -4.212 84.583
STMicroelectronics 0.0865345 -3.88854 356.825
両方に違いがある理由、またはハードウェアセンサーとソフトウェアセンサーの両方を常に監視する必要がある理由について何か考えはありますか?