Подтвердить что ты не робот

Когда использовать акселерометр или гироскоп на Android

Можно ли предположить, что большинство пользовательских устройств будет иметь гироскоп? Другими словами, я исключу значительное число людей, используя гироскоп в своем приложении?

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

4b9b3361

Ответ 1

Покрытие пользователя:

Большинство устройств имеют как гироскоп, так и акселерометр, но почти каждое устройство имеет акселерометр. Особенно старые устройства и более дешевые не имеют гироскопа. Не забывайте, что, поскольку это приложение для детей, возможно, родители не хотят, чтобы маленькие использовали свой превосходный планшет на 700 долларов, и, вероятно, будут использовать более дешевые. Более дешевые устройства, как правило, не имеют гироскопов. Итак, +1 для акселерометра.

Пользовательский интерфейс

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

Использование батареи

Здесь нет соревнования. Гироскоп использует в 3-30 раз больше батареи (возможно, больше, в зависимости от устройства), в то время как акселерометр очень нежный на батарее. Кроме того, для большинства пользователей акселерометр уже активен (чтобы автоматически поворачивать экран), поэтому здесь нет использования батареи. +1 для акселерометра

Программирование

Датчики довольно легко и просто реализовать в приложениях для Android. Поскольку гироскоп обнаруживает скорость вращения, он дает все 0 значений, если устройство остается неподвижным (и, возможно, немного шумом в диапазоне + -0.01rad/s), поэтому вам нужен только небольшой блок if, чтобы отклонить очень незначительные (например, когда значения гироскопа меньше 0,2 рад/с). С помощью акселерометра вам понадобятся дополнительные вычисления для определения ориентации устройства и какая ось на самом деле является той, которая требует большего внимания для определения направления движения. Это не сложно сделать, но он добавляет несколько дополнительных строк кода и дополнительную отладку в вашу работу. +1 для гироскопа.

Заключение

Для простого приложения для детей акселерометр - это путь. Я больше об этом не подумал. Поскольку вы не очень заботитесь о точности, вы фактически устраняете точки, полученные гироскопом.

Ответ 2

Я думаю, что эти датчики должны учитывать (я цитирую из книги "Reto Meier, Professional Android 4 Application Development" здесь):

  • Sensor.TYPE_ACCELEROMETER - трехосный акселерометр, который возвращает текущее ускорение вдоль трех осей в м/с2 (метры в секунду в секунду).

  • Sensor.TYPE_GYROSCOPE - трехосный гироскоп, который возвращает скорость вращения устройства по трем осям в радианах в секунду. Вы можете интегрировать скорость вращения с течением времени, чтобы определить текущую ориентацию устройства; однако, как правило, лучше использовать это в сочетании с другими датчиками (обычно акселерометрами), чтобы обеспечить согласованную и скорректированную ориентацию.

  • Sensor.TYPE_ROTATION_VECTOR- Возвращает ориентацию устройства в виде комбинации угла вокруг оси. Он обычно используется как вход метода getRotationMatrixFromVector из диспетчера датчиков для преобразования возвращенного вектора вращения в матрицу вращения. Датчик вектора вращения обычно реализуется как виртуальный датчик, который может комбинировать и корректировать результаты, полученные от нескольких датчиков, таких как акселерометры и гироскопы, для обеспечения более плавной матрицы вращения.

Конец цитирования... Вы можете найти реализацию датчика по умолчанию для заданного типа с использованием метода getDefaultSensor, например:

Sensor defaultGyroscope = sensorManager.getDefaultSensor(Sensor.TYPE_GYROSCOPE);

Если это возвращает значение null, устройство не имеет датчика, поэтому вы не хотите его использовать. Я ожидаю, что большинство устройств имеют эти датчики (скорее всего, акселерометр), поскольку они используются для обнаружения вращения экрана.

Ответ 3

Я считаю, что большинство телефонов имеют возможность наклона. У меня есть двухпроцессорный 2-летний телефон, который был 45 $, когда он был новым, и работает на Android 2.1, он наклоняется и меняет перспективу.
У меня также есть таблетка, которой три года, и она тоже наклоняется.
Я бы сказал, что вы совершенно уверены, что наклон будет там.

Ответ 4

Почти у всех (или даже всех) телефонов будет акселерометр. Но не у всех из них есть гироскоп. Кто-то сделал исчерпывающий список телефонов с гиросопой здесь: Какие телефоны Android там есть гироскоп?

Если вам удастся заставить его работать, используя только акселерометр, его некоторые дополнительные устройства будут поддерживать ваше приложение, но я не могу сказать вам, насколько велика эта разница.

Ответ 5

С течением времени количество и типы датчиков, доступных в "типичном" устройстве Android, значительно изменились. Но некоторые средства измерения ориентации устройства относятся к более старым возможностям. Похоже, что правильный подход заключается в проверке во время работы для новых датчиков и возврате к более старым, при этом грациозно обрабатывая случай, когда информация просто недоступна.

В документе разработчика Sensor Overiew есть таблица, показывающая, когда определенные типы датчиков были впервые доступны на уровне API Android. Но обратите внимание, что это просто отражает способность этого уровня API говорить об этом типе данных; на конкретном устройстве все еще может отсутствовать требуемое оборудование.

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

В настоящее время (декабрь 2013 г.) панель демонстрирует, что всего около 1,6% устройств Android, обращающихся к Play Store, - это версия 2.3 или новее (API 10 или новее). Эти данные основаны исключительно на версии 2.2 или более новых устройствах, использующих хранилище, устройства старше 2.2 всего лишь около 1% всех устройств, которые проверяют на любой сервер Google в августе 2013 года. Эта страница содержит информацию о разрешении отображения устройства, но не по-видимому, охватывают другие функции устройств. Я не мог найти приборную панель, в которой конкретно были указаны датчики, доступные в дикой природе.