2

イムと下のような状況に会った:、40ミリ秒または60ミリ

  1. 現在、20ms、40ms、60msなどの通常の周波数で加速度計の値が必要です

  2. ここではSENSOR_DELAY_GAMEですが、異なるデバイスでこのパラメータの間隔が異なります。たとえば、G2は40ms、G7は60ms、Nexus Sは20msを使用しています。

  3. 私はタイマーを設定しようとしました、またはthread.sleepを使用しましたが、JavaのGC問題のため、システムは通常の頻度で値を取得できません。

これは非常に迷惑であり、任意の1は、Android SDKの内側に、私は通常の周波数の加速度値を取得できるようにする適切な方法があるかどうかを言うためにどんな考えを持っている場合、それは非常に参考になります!

ありがとうございます!

答えて

0

私は、単に私が望むよりも早い値を投げ捨てることによってこれを行っています。センサーが私よりも頻繁に私に必要なフィードを持っている必要があるので、バッテリーの消費の観点から理想的ではありませんが、少なくとも私は彼らが定期的に来ることを制御することができます。

ような何か:私はあなたが任意のデバイス上の正確な周波数を取得することができますコードを構築してい

static final int ACCEL_SENSOR_DELAY = 100; // the number of milisecs to wait before accepting another reading from accelerometer sensor 
long lastAccelSensorChange = 0; // the last time an accelerometer reading was processed 
@Override 
public void onSensorChanged(SensorEvent sensorEvent) { 


    if (sensorEvent.accuracy == SensorManager.SENSOR_STATUS_UNRELIABLE) return; 

    long now = System.currentTimeMillis(); 
    if (now-ACCEL_SENSOR_DELAY > lastAccelSensorChange) { 
     lastAccelSensorChange = now; 
     mCompassValues = event.values.clone(); 
     //... do your stuff 
    } 
0

hereプロジェクトをダウンロードしていくつかの説明を得ることができます。

コードでは、異なる料金を試すことができます。たとえば、私のギャラクシーS2の通常モードは5Hzです。以下のようにサンプリング周期を設定することにより、

0

使用registerListener:注意の

boolean registerListener (SensorEventListener listener, Sensor sensor, int samplingPeriodUs) 

Source

ワード:samplingPeriodUs引数はシステムへのヒントにすぎません。これを使用する前にテストしてください。