我的意思是,对于下面的代码,_aBuffer.size(),_ laBuffer.size(),....都是一样的吗?
我在不同的设备上尝试过相同的代码,一个是'是',另一个是'不',但我不知道第二个设备的硬件是否存在一些问题,因为它有一些奇怪的行为
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);
}
}
答案 0 :(得分:0)
由于样本数取决于您在
中提供的值public boolean registerListener (SensorEventListener listener, Sensor sensor, int rate)
样本的大小在理论上必须相同。但在实践中并非总是如此。
说
费率传感器事件在。这只是对系统的暗示。 可能比指定的速率更快或更慢地接收事件。通常会更快地收到事件。该值必须是SENSOR_DELAY_NORMAL,SENSOR_DELAY_UI,SENSOR_DELAY_GAME或SENSOR_DELAY_FASTEST之一。或者,微秒事件之间所需的延迟。