Нужно читать датчики Android очень быстро - PullRequest
20 голосов
/ 16 декабря 2009

Выпуск: -

  1. Я разрабатываю приложение, которое Нужны новые данные ускорения каждые 5 миллисекунды.

Мой подход: -

  1. Я создал удаленный сервис который читает только ускорение данные из SensorManager.
  2. Я также установил скорость чтения "DELAY FASTEST" во время инициализации SensorManager.
  3. Тогда я использую IPC, чтобы общаться тоже мой Основное приложение, чтобы получить эти чтение.

Проблема: -

  1. Если я положу журнал внутрь событие onSensorChange () я получаю новые данные датчика каждые 20 мсек. Но мне нужны данные каждые 5 мс.

Вопрос?

  1. Есть ли лучший способ прочитать данные сеньора быстрее.

  2. Можно ли как-нибудь опросить Данные сеньора скорее, что ждет обработчик события, чтобы вызвать событие?

Пожалуйста, помогите мне найти лучшее решение для чтения данных за 5 мс или опроса данных ускорения.

Ответы [ 5 ]

7 голосов
/ 23 августа 2010

Насколько я понимаю, акселерометр очень шумный и не подходит для быстрых операций. См. Доклад GoogleTech о слиянии сенсоров по адресу http://www.youtube.com/watch?v=C7JQ7Rpwn2k для более подробного объяснения и того, что вы можете с этим сделать. Краткое объяснение: Используйте гироскоп для высокоскоростных событий и акселерометр для исправления дрейфа.

4 голосов
/ 14 июля 2015

Для людей, ссылающихся на этот пост сегодня , хотя я думаю, что @robinr имеет хорошую точку зрения и очень верна, это не ответ, однако stackoverflow не позволит мне прокомментировать это напрямую.

Для ответов на первый вопрос ссылка Родная деятельность . И . Android не гарантирует скорость передачи данных, он только гарантирует, что вы получите минимум (или максимум, если вы запрашиваете слишком много).

Акселерометр Не шумно, по крайней мере, не сегодня. Просто слишком хорошо подбирать ВСЕ. Поэтому вам нужно использовать некоторую фильтрацию, если вы хотите хороший алгоритм акселерометра. Если у вас есть отличные фильтры, акселерометр на самом деле предпочтительнее всего остального, потому что он обычно является датчиком с меньшей мощностью, имеет самую высокую поддерживаемую частоту и, скорее всего, будет доступен, когда экран выключен (по сравнению с другими датчиками).

Предостережение в отношении принудительного использования родного и извлечения максимальной частоты заключается в том, что поддержка вашего устройства будет ограничена. Вот почему Android не поддерживает прямые настройки частоты.

В ответ на вопрос 2; вам придется вручную регулировать события датчика, отслеживая метку времени.

0 голосов
/ 25 января 2012

вы решили свою проблему? У меня есть подобный проект, чтобы получить образец по крайней мере каждые 10 мс (около 100 Гц), здесь . Но ничего не изменилось в сэмплах, которые я получил, даже когда я установил setEventRate = 10 milisec.

Так что я думаю, что есть какое-то аппаратное ограничение, так как я прочитал таблицу данных BMA220 (мое сенсорное оборудование) обеспечивает только 62,5 Гц для подрежима ориентации.

0 голосов
/ 02 ноября 2010

Есть несколько проблем, которые я могу видеть с этим. Во-первых, вы, скорее всего, будете перегружать всю оставшуюся часть системы, если попытаетесь выполнить принудительный опрос данных датчика так быстро. Если все, что вы делаете, это опрашиваете датчики, которые могут быть в порядке, но если вы хотите какого-либо взаимодействия с пользователем, я не уверен, что это сработает. Кроме того, почему вам нужны данные так быстро? Если вы общаетесь с людьми, вы не заметите отставание даже в 100 мс.

0 голосов
/ 11 августа 2010

Что касается скорости Android SensorManager, я был бы более склонен заподозрить скорость ввода-вывода файлов Android, которая генерирует ваш журнал. Вы можете попробовать эталонный код чтения вашего датчика без записи в журнал. Что-то вроде регистрации текущего времени в миллисекундах, затем выполнения 1 000 000 операций считывания с датчиков и повторной регистрации текущего времени. Возможно, вам все еще придется использовать версию C для получения данных, но, по крайней мере, вы будете точно знать, где находится узкое место.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...