-1

つまり、以下のコードの場合、_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);
    }
}
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 に答える