つまり、以下のコードの場合、_aBuffer.size()、_ laBuffer.size()、....はすべて同じですか?
異なるデバイスで同じコードを試しました。1つは「はい」、もう1つは「いいえ」ですが、2番目のデバイスのハードウェアに問題があるかどうかはわかりません。これは、奇妙な動作があるためです。
public void onSensorChanged(SensorEvent event) {
int eType = event.sensor.getType();
float[] values = event.values.clone();
if (eType == Sensor.TYPE_ACCELEROMETER) {
_aBuffer.offer(values);
System.out.println("onSensorChanged values: "+values[0]+","+values[1]+","+values[2]);
} else if (eType == Sensor.TYPE_LINEAR_ACCELERATION) {
_laBuffer.offer(values);
} else if (eType == Sensor.TYPE_GRAVITY) {
_gBuffer.offer(values);
} else if (eType == Sensor.TYPE_MAGNETIC_FIELD) {
_mBuffer.offer(values);
} else if (eType == Sensor.TYPE_ORIENTATION) {
// do nothing
} else if (eType == Sensor.TYPE_GYROSCOPE) {
_gyroBuffer.offer(values);
} else if (eType == Sensor.TYPE_ROTATION_VECTOR) {
_rotBuffer.offer(values);
}
}