0

我和一个朋友正在开发一个应用程序,它可以从加速度计中读取数据以供以后处理。我们正在使用 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 中的代码更准确的数据是否有意义?

4

1 回答 1

1

Blackberry 开发人员可能也在使用包含 Java 实现中的 c 代码的库。

不,该语言不应该发挥任何作用,因为无论如何 c 和 java 都被简化为字节码。

于 2012-04-20T14:58:35.903 回答