Я разрабатываю приложение для Android для исследования и читаю несколько данных с датчиков, таких как акселерометр, гироскоп, барометр и т. Д. Итак, у меня есть 4 устройства Nexus 6P с новейшим Factory Image и свежимне устанавливайте ни одно другое приложение, кроме стандартного, предварительно установленного.Итак, проблема, которая возникает сейчас, заключается в том, что один из телефонов постоянно отстает, поэтому, например, я записываю акселерометр на полчаса с частотой 105 Гц (так что максимальная возможная частота для акселерометра составляет 400 Гц), просто чтобы убедиться, что я получаюпо крайней мере, о количестве сэмплов, которое я ожидал бы для 100 Гц, и результаты следующие:
Smapling за полчаса при 100 Гц -> 180000 образцов
Smapling за полчаса при 105 Гц -> 189000 семплов
(Теперь это только пример для акселерометра, но он одинаков для всех остальных датчиков на каждом устройстве. Таким образом, устройства 1,3,4 дают примерно те же хорошие результаты для других датчиков, в то время как устройство 2получает те же плохие результаты на всех остальных датчиках).
- Устройство 1: 180000 образцов
- Устройство 2: 177273 образцов <- телефон, отстающий от </li>
- Устройство 3: 181800 сэмплов
- Устройство 4: 179412 сэмплов
Итак, проблема в устройстве № 2, где мне не хватает почти 3000 сэмплов (Я знаю, что это плачет на высоком уровне), и я предполагаю, что эта проблема, вероятно, связана с аппаратным обеспечением.То, что это может быть проблема с производительностью, я, вероятно, могу исключить, поскольку не имеет значения, сколько считывающих датчиков, а также считывающих их на частоте 400 Гц, работает, как и ожидалось (при желании я также могу предложить образцы для этого).Я также попытался установить частоту дискретизации 400 Гц, чтобы она была самой быстрой, а затем сделать запись в соответствии с отметкой времени, которая привела к тому же результату.
Так что на всякий случай я предоставлю, как зарегистрировать прослушиватель датчиков:
protected void onCreate(Bundle savedInstanceState){
sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
unaccDataSensor = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER_UNCALIBRATED);
}
....
private void Start(){
sensorManager.registerListener(unaccDataListener, unaccDataSensor, 10000);
}
Итак, я хочу получить хотя бы то количество образцов, которое я должен ожидать, поэтому выше это не проблема, и чуть-чуть ниже также приемлемо.Так что, если у кого-то есть идея о том, что еще я могу попробовать или что может вызвать проблему, я был бы очень благодарен.
Это мой первый пост, так что если что-то не хватает или я что-то не так объяснил, яизвините, и я изо всех сил стараюсь это исправить.