Я ищу способ получить данные датчиков (особенно Датчик освещенности), быстро, скажем, частота дискретизации на частоте 500 Гц. Я совершенно новый в Android. Я использую Nexus 5 и Nexus 7. Можно ли сделать это без доступа к коду драйвера? Заранее спасибоПрочитайте данные датчика быстро в Android
ответ
Как и в официальной документации, вы можете указать частоту в registerListener.
@Override
protected void onResume() {
super.onResume();
mSensorManager.registerListener(this, mLight,SensorManager.SENSOR_DELAY_NORMAL);
}
В этом примере, задержка данных по умолчанию (SENSOR_DELAY_NORMAL) указывается, когда метод registerListener() вызывается. Задержка данных (или частота дискретизации) управляет интервалом, в который события датчика отправляются в ваше приложение через метод обратного вызова onSensorChanged(). Задержка по умолчанию подходит для мониторинга типичных изменений ориентации экрана и использует задержку в 200 000 микросекунд. Вы можете указать другие задержки данных, такие как SENSOR_DELAY_GAME (задержка в 20 000 микросекунд), SENSOR_DELAY_UI (задержка в 60 000 микросекунд) или SENSOR_DELAY_FASTEST (0 микросекундная задержка). Начиная с Android 3.0 (API Level 11) вы также можете указать задержку как абсолютное значение (в микросекундах).
Задержка, которую вы указываете, является только предполагаемой задержкой. Система Android и другие приложения могут изменить эту задержку. В качестве наилучшей практики вы должны указать самую большую задержку, которую вы можете использовать, поскольку система обычно использует меньшую задержку, чем та, которую вы указываете (то есть вы должны выбрать самую медленную частоту дискретизации, которая по-прежнему соответствует потребностям вашего приложения). Использование большей задержки накладывает меньшую нагрузку на процессор и, следовательно, потребляет меньше энергии.
Если вы хотите использовать 500 Гц, вы можете использовать SENSOR_DELAY_FASTEST, чтобы проверить, какая именно самая высокая скорость вы можете получить. Если это возможно, то вы можете указать значение для задержки в 2000 микросекунд.
Нет общедоступного метода определения скорости, с которой каркас датчика отправляет события датчика в ваше приложение; однако вы можете использовать временные метки, связанные с каждым событием датчика, для вычисления частоты дискретизации в течение нескольких событий. Вам не нужно менять частоту дискретизации (задержка) после ее установки. Если по какой-то причине вам необходимо изменить задержку, вам придется отменить регистрацию и перерегистрировать прослушиватель датчиков.
Спасибо. Но я не думаю, что мы можем просто установить задержку как 2000 микросекунд. –
@ZYang Используя FASTEST, вы можете попробовать и проверить верхний предел, тогда, возможно, вы можете просто использовать это. В документации было предложено указать время самостоятельно. – Anhong
Что вы пробовали? И почему это должно быть быстро? и вам нужно разрешение манифеста. –
Это выглядит невозможным, если у нас нет исходного кода. Мне нужно быстро прочитать данные, чтобы обнаружить быстрое изменение света. Как вы подразумеваете разрешение? Какие-либо предложения? Спасибо большое! –
Stackoverflow - это не сайт для запроса всего исходного кода вашего приложения. И если вы новичок в андроиде, вам следует начать с чего-то простого ... –