友人と私は加速度計からデータを読み込んで後で処理するアプリケーションを開発しています。私たちはBlackberry Playbook(Androidベース)で作業しています。ネイティブAPIから取得した加速度計のデータはより正確ですか?
可能な最も正確なデータが必要です。彼は、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`セットする前に読みました読書の速度は約20ミリ秒ですが、わかりません。
これらのコードはJavaのコードよりも正確なデータを取得することは意味がありますか?
あなた(またはあなたの友人)が「より正確」を意味するのはどうですか?実際の価値をどのように知っていますか? – byrondrossos
@byrondrossos彼が望むことによると、より正確なことは、装置が静止位置にあるとき、すなわち装置がテーブル上に横たわっているときにデータがあまり変化しないことを意味する。(x、y、z)加速度計は、いくつかのデバイスで起こるように、狂ったように変わるべきではありません。 – AntonioJunior
センサーのジッタが問題になる場合は、ドライバがあなたのためにそれを行うことができない限り、それを自分で処理する必要があります。 Cコードでは、 'sensor_set_skip_duplicates'の呼び出しによって、Javaコードがアクセスできないものが変更される可能性があります。 – HonkyTonk