私はアンドロイドプログラミングが初めてです。0.05 秒のサンプリング時間でジャイロスコープからデータを読み取るアプリケーションを開発する必要があります。0.05 秒ごとにデータを取得する必要があります。
4種類のサンプリングレートを提供するAndroidのセンサーマネージャーを調べましたが、それらは均一ではありません。
私はアンドロイドプログラミングが初めてです。0.05 秒のサンプリング時間でジャイロスコープからデータを読み取るアプリケーションを開発する必要があります。0.05 秒ごとにデータを取得する必要があります。
4種類のサンプリングレートを提供するAndroidのセンサーマネージャーを調べましたが、それらは均一ではありません。
どの 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 に到達するまで。システムが非常にビジーな場合、センサーが毎回作動するという保証はありません。
イベントは、指定されたレートよりも速くまたは遅く受信される場合があります
https://developer.android.com/reference/android/hardware/SensorManager.htmlから
イベントは、指定された速度より速くまたは遅く受信される場合があります。通常、イベントはより速く受信されます。SENSOR_DELAY_NORMAL、SENSOR_DELAY_UI、SENSOR_DELAY_GAME、SENSOR_DELAY_FASTEST、またはマイクロ秒単位の遅延のいずれかになります。
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 内のすべてのイベントが順次報告されます。これは、最大レポート レイテンシが経過する前に一部のイベントがレポートされることを意味します。