友人と私は、加速度計からデータを読み取って後で処理するアプリケーションを開発しています。Blackberry Playbook (Android ベース) を使用しています。
可能な限り正確なデータが必要です。Playbook の加速度計から取得した読み取り値は、Java API から取得した読み取り値と比較して、ネイティブ C API を使用した場合の方が正確であると彼は言います。彼が各 API からデータを読み取る速度が、C コードの読み取りがより正確であると彼に思わせているのではないかと思いました。
読み取り速度が設定され、データは次のように C で読み取られます。
/* 25000 microseconds = 25 miliseconds */
static const int ACCELEROMETER_RATE = 25000;
sensor_set_rate(SENSOR_TYPE_ACCELEROMETER, ACCELEROMETER_RATE);
sensor_set_skip_duplicates(SENSOR_TYPE_ACCELEROMETER, true);
/* ...code ommited... */
/* gets the data */
sensor_event_get_xyz(event, &force_x, &force_y, &force_z);
そしてJavaでは次のようになります:
mSensorManager.registerListener(this, mAccelerometer, SensorManager.SENSOR_DELAY_UI);
/* ...code ommited... */
public void onSensorChanged(SensorEvent event) {
if (event.sensor.getType() != Sensor.TYPE_ACCELEROMETER)
return;
mSensorX = event.values[0];
mSensorY = event.values[1];
mSensorZ = event.values[2];
}
SensorManager.SENSOR_DELAY_UI` が読み取り速度を約 20ms に設定することを以前に読んだことがありますが、よくわかりません。
これらの C のコードが Java のコードよりも正確なデータを取得することは理にかなっていますか?