我和朋友正在开发一个应用程序,它从加速计读取数据以便稍后处理。我们正在使用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`将读取速率设置为大约20ms,但我不确定。
C中的代码是否能获得比Java中的代码更准确的数据?
答案 0 :(得分:1)
Blackberry开发人员也可能在Java实现中使用包含c代码的库。
不,语言应该不起任何作用,因为无论如何c和java都被简化为字节码。