Я немного озадачен скоростью чтения сенсоров в Android.Приведенный ниже код сообщает о задержках ~ 53 мс (блейд-сервер ZTE, события датчика скорости установлены на SENSOR_DELAY_FASTEST).
public void onSensorChanged(SensorEvent event) {
synchronized (this) {
switch (event.sensor.getType()) {
case Sensor.TYPE_MAGNETIC_FIELD:
TimeNew = event.timestamp;
delay = (long)((TimeNew - TimeOld)/1000000);
TimeOld = TimeNew;
Log.d("Test", delay + " ms");
break;
}
}
}
Журнал:
DEBUG/Test(23024): 52 ms
DEBUG/Test(23024): 53 ms
DEBUG/Test(23024): 54 ms
DEBUG/Test(23024): 56 ms
DEBUG/Test(23024): 52 ms
DEBUG/Test(23024): 52 ms
DEBUG/Test(23024): 55 ms
DEBUG/Test(23024): 52 ms
Если мы хотим усреднить, скажем, 100 выборок, а затем сохранить данные, время между каждой сотой выборкой будет значительно различаться.Вероятно, это связано с тем, что значение датчика не меняется в регулярные периоды времени.
Но я что-то упустил?Есть ли способ получить (более) регулярные измерения (например, 100 мс)?Или, может быть, я должен пойти на усреднение по определенному периоду времени, а не по количеству выборок?
Кроме того, 50 мс, похоже, слишком много времени.Может ли это быть аппаратным ограничением устройства?Будет ли это число меняться на разных платформах?
Любой совет приветствуется.