5

私はアンドロイドプログラミングが初めてです。0.05 秒のサンプリング時間でジャイロスコープからデータを読み取るアプリケーションを開発する必要があります。0.05 秒ごとにデータを取得する必要があります。

4種類のサンプリングレートを提供するAndroidのセンサーマネージャーを調べましたが、それらは均一ではありません。

4

3 に答える 3

4

どの API を開発していますか? API 11 以降、センサーから結果を取得するまでの遅延を指定することもできます。通常、センサーは 4 つの固定遅延で登録されます。

SensorManager.SENSOR_DELAY_NORMAL (200000 マイクロ秒の遅延) (デフォルト値) SensorManager.SENSOR_DELAY_GAME (20000 マイクロ秒の遅延) SensorManager.SENSOR_DELAY_UI (60000 マイクロ秒の遅延) SensorManager.SENSOR_DELAY_FASTEST (0 マイクロ秒の遅延)

センサーは次のように登録されます。

   mSensorManager.registerListener(this, mSensor, SensorManager.SENSOR_DELAY_NORMAL);

したがって、API 11 までから開発している場合は、登録できます。

   mSensorManager.registerListener(this, mSensor, 50000);

そうでない場合、それは難しくなります。0.05 秒ごとに結果を取得することはできませんが、SENSOR_DELAY_UI を設定することで 0.06 秒ごとに結果を取得できます。もう1つの可能性は、SENSOR_DELAY_FASTESTを設定し、次のようなもので50000までカウントすることです

    private int value = 0:

およびすべての onSensorChanged() イベント

    value++;

あなたが 50000 に到達するまで。システムが非常にビジーな場合、センサーが毎回作動するという保証はありません。

于 2013-06-27T08:49:31.817 に答える
0

イベントは、指定されたレートよりも速くまたは遅く受信される場合があります

https://developer.android.com/reference/android/hardware/SensorManager.htmlから

イベントは、指定された速度より速くまたは遅く受信される場合があります。通常、イベントはより速く受信されます。SENSOR_DELAY_NORMAL、SENSOR_DELAY_UI、SENSOR_DELAY_GAME、SENSOR_DELAY_FASTEST、またはマイクロ秒単位の遅延のいずれかになります。

于 2016-12-28T14:21:26.780 に答える
0

API 19 (2013+) 以降、登録 API の新しいバリアントがあり、センサーの読み取り値を受け取る間隔を指定できます。ドキュメントから:

boolean registerListener (SensorEventListener listener, Sensor sensor, int samplingPeriodUs, int maxReportLatencyUs) 指定されたサンプリング頻度と指定された最大レポート遅延で、指定されたセンサーの SensorEventListener を登録します。

この関数は registerListener(SensorEventListener, Sensor, int) に似ていますが、イベントが配信される前にハードウェア FIFO (キュー) に一時的に留まることができます。イベントは、maxReportLatencyUs マイクロ秒までハードウェア FIFO に格納できます。FIFO 内のイベントの 1 つを報告する必要があると、FIFO 内のすべてのイベントが順次報告されます。これは、最大レポート レイテンシが経過する前に一部のイベントがレポートされることを意味します。

于 2017-01-05T09:30:47.180 に答える