是否通过onSensorChanged获得了相同数量的不同类型的传感器数据?

时间:2013-01-07 15:13:08

标签: android android-sensors

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

1 个答案:

答案 0 :(得分: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之一。或者,微秒事件之间所需的延迟。