2016-06-27 5 views
0

Я разрабатываю приложение, которое измеряет ускорения автомобиля.Могу ли я использовать TYPE_LINEAR_ACCERERATION на всех телефонах?

Вместо использования акселерометра я прочитал о линейном акселерометре и внедрил его.

У меня есть два устройства для тестирования, он отлично работает на Sony Xperia Z1, но я не получаю никакого значения на старом Alcatel onetouch.

Это из-за его версии для Android (5.1 против 4.2), потому что мой код неправильный или это аппаратное ограничение?

ответ

1

Взятые из документации Android,:

TYPE_LINEAR_ACCELERATION

Добавлено в уровне API 9 INT TYPE_LINEAR_ACCELERATION константа, описывающая линейный тип датчика ускорения.

См. SensorEvent.values ​​для получения более подробной информации.

Константа Значение: 10 (0x0000000a)

Это означает, что он должен работать на любом устройстве после API 9

Пожалуйста, в ответ РАССМОТРЕНИЯ Lork в этом post. В нем указывается, какой тип датчика вы должны использовать для измерения определенных типов движений.

Обновление: Я добавлю информацию о реакции Lork как это могло бы помочь будущим читателям:

TYPE_ACCELEROMETER использует акселерометр и только акселерометр. Он возвращает исходные события акселерометра с минимальной или вообще отсутствующей обработкой.

TYPE_GYROSCOPE (если имеется) использует гироскоп и только гироскоп. Как и выше, он возвращает необработанные события (угловая скорость un rad/s) без обработки вообще (компенсация смещения/масштабирования).

TYPE_ORIENTATION устарел. Он возвращает ориентацию как рыскание/шаг/ролл в градусах. Он не очень хорошо определен и может быть использован только тогда, когда устройство не имеет «рулона». Этот датчик использует комбинацию акселерометра и магнитометра. Маргинально лучшие результаты могут быть получены с помощью помощников SensorManager. Этот датчик сильно «обработан».

TYPE_LINEAR_ACCERERATION, TYPE_GRAVITY, TYPE_ROTATION_VECTOR - это «плавленые» датчики, которые возвращают соответственно линейный вектор ускорения, силы тяжести и вращения (кватернион). Не определено, как они реализованы. На некоторых устройствах они реализованы в ч/б, на некоторых устройствах они используют акселерометр + магнитометр, на некоторых других устройствах они используют гироскоп.

В Nexus S и Xoom гироскоп в настоящее время НЕ используется. Они ведут себя так, как будто не было никакого гироскопа, как у Nexus One или Droid. Мы планируем улучшить эту ситуацию в будущем выпуске.

В настоящее время единственным способом воспользоваться гироскопом является использование TYPE_GYROSCOPE и интеграция вывода вручную.

Я надеюсь, что это помогает,

Mathias

+0

Дело в том, что она не работает на некоторых телефонах и они после API 9. –

+0

типа добавляется в API9, это не означает, что (виртуальный) датчик. – jms