0

加速度計が特定の値に達したときに音を鳴らす簡単なアプリに取り組んでいます。
画面点灯時は問題ありません。アクセルが走る頻度はそこそこ。
これは正しく機能しています。

今、私は画面がオフのときにこれをやりたいと思っています。
何らかの理由で、SENSOR_DELAY に関係なく、1 秒あたり 2 つのセンサー更新しか取得しません。
これは、Android がその電力を節約していることと関係があると思われます。しかし、センサー データを正確に読み取るには、より高い周波数が必要です。

ウェイク ロックに目を向ける前に、この「強制的な」周波数低下をオーバーライドできるかどうか、またこれがデバイスに依存する問題であるかどうかを知りたいです。画面がオフの場合でも、より高い更新頻度を維持する必要があります。

4

2 に答える 2

0

センサーの遅延値は単なる推奨値です (または、少なくとも Android 4.0/4.1 前後でした)。実装によっては、センサーが要求よりも早くイベントを配信する場合があります。これはドライバーの裁量であり、デバイスのモデルによって動作が異なる場合があります。

センサーのイベント配信レートを制限するのはなぜですか? バックグラウンドで複雑な処理を行っていて、プロセッサの負荷を軽減したい場合は、次のアプローチを検討してください。イベントを受信して​​処理するときに、そのタイムスタンプを記録します。次のイベントが到着したら、そのタイムスタンプと以前に保存されたものとの差を計算します。タイムスタンプの差がしきい値以上である場合にのみ、イベントを処理します。これによりイベントの配信率が低下することはありませんが、n イベントに 1 つしか処理されないため、処理時間が短縮されます。

于 2014-03-03T16:50:35.277 に答える
0

わかりませんが、 SENSOR_DELAY_FASTEST を使用してさらに更新を取得しますか? 次に、次のようなものを onSensorChanged() に挿入します。

public void onSensorChanged(SensorEvent event)
{
    if (event.sensor.getType() == Sensor.TYPE_)
    {
    long actualTime = System.currentTimeMillis();
        if (actualTime - lastUpdate > 63)
        {
        lastUpdate = actualTime;
        // update
        }
    }
}
于 2014-03-03T16:03:50.340 に答える