我和一个朋友正在开发一个应用程序,它可以从加速度计中读取数据以供以后处理。我们正在使用 Blackberry Playbook(基于 Android)。
我们需要尽可能准确的数据。他说,与从 Java API 获得的读数相比,使用原生 C API 完成时,他从 Playbook 的加速度计获得的读数更准确。我想也许他从每个 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 毫秒,但我不确定。
这些 C 中的代码将获得比 Java 中的代码更准确的数据是否有意义?