1

100ミリ秒ごとなど、指定されたレートで方向センサーの値を読み取りたいと思います。どうすればこれを達成でき、どのように 100 ms のレートを指定できますか? 次のコード スニペットを使用して、方向センサーを読み取ります。

  final public SensorEventListener listener=new SensorEventListener() {
   public void onSensorChanged(SensorEvent e) {
    Log.d(TAG, "in sensor changed");

  if (e.sensor.getType()==Sensor.TYPE_ORIENTATION) {
      OrientationX=e.values[0];
      OrientationY=e.values[1];
      OrientationZ=e.values[2];
      message_orientation = "OrientationX ="+String.valueOf(OrientationX)+", OrientationY   ="+String.valueOf(OrientationY)+", OrientationZ ="+String.valueOf(OrientationZ);            
      Log.d(TAG, "Orientation value is "+message_orientation);
  }


}
4

2 に答える 2

1

ドキュメントから

mSensorManager.registerListener(これ、mAccelerometer、SensorManager.SENSOR_DELAY_NORMAL);

SensorManager.SENSOR_DELAY_NORMAL はレートです

ドキュメントで説明されているように:

レート センサー イベントが配信されます。これはシステムへのヒントにすぎません。イベントは、指定された速度より速くまたは遅く受信される場合があります。通常、イベントはより速く受信されます。値は、SENSOR_DELAY_NORMAL、SENSOR_DELAY_UI、SENSOR_DELAY_GAME、または SENSOR_DELAY_FASTEST のいずれかでなければなりません。または、マイクロ秒単位のイベント間の望ましい遅延。

于 2012-12-28T18:47:01.290 に答える
0

テスト結果に基づくいくつかの概算を次に示します。

Accelerometer, SENSOR_DELAY_FASTEST: 18-20 ms
Accelerometer, SENSOR_DELAY_GAME: 37-39 ms
Accelerometer, SENSOR_DELAY_UI: 85-87 ms
Accelerometer, SENSOR_DELAY_NORMAL: 215-230 ms
Orientation Sensor, SENSOR_DELAY_FASTEST: 16-17 ms
Orientation Sensor, SENSOR_DELAY_GAME: 37-39 ms
Orientation Sensor, SENSOR_DELAY_UI: 77 ms
Orientation Sensor, SENSOR_DELAY_NORMAL: 224-225 ms

100ms など、独自のレートを定義することもできます。

int READINGRATE = 100000 %time in us mSensorManager.registerListener(this, mLinearAccelerometer, READINGRATE);

ただし、レートは概算です。正確なレートが必要な場合は、タイマーを使用して 100 ミリ秒ごとに値を取得することをお勧めします。

于 2014-01-29T21:17:58.617 に答える