-1

我的意思是,对于下面的代码,_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);
    }
}
4

1 回答 1

0

由于样本数量取决于您提供的值

public boolean registerListener (SensorEventListener listener, Sensor sensor, int rate)

理论上,样本的大小必须相同。但在实践中并不总是如此。

http://developer.android.com/reference/android/hardware/SensorManager.html#registerListener(android.hardware.SensorEventListener, android.hardware.Sensor, int)

速率传感器事件的发送时间为。这只是对系统的提示。事件的接收速度可能比指定的速率快或慢。通常会更快地接收到事件。该值必须是 SENSOR_DELAY_NORMAL、SENSOR_DELAY_UI、SENSOR_DELAY_GAME 或 SENSOR_DELAY_FASTEST 之一。或者,事件之间的所需延迟(以微秒为单位)。

于 2013-01-07T15:47:40.287 回答