Использование акселерометра Android без плоского устройства

StackOverflow https://stackoverflow.com/questions/4251491

Вопрос

Я играю с акселерометром Android поздно с помощью Android SDK и Adobe Air для Android SDK на моем дроиде Motorola. То, что я заметил, что акселерометр работает просто хорошо, но мне было интересно, можно ли в некоторой моде возможно, чтобы мне не нужно использовать устройство в горизонтальном положении. Другими словами, я хочу использовать акселерометр для управления моим визуальным дисплеем, но инициализируйте его (или изменить каким-то образом), чтобы я не должен был держать его идеально плоским (не очень весело, чтобы наклониться по телефону).

Кто-нибудь знает, как я могу удерживать устройство с комфортом в моей руке, скажем, 45 градусов и все же используйте акселерометр, чтобы обеспечить показания вперед / назад? Это возможно? Любые примеры этого это доступно?

Это было полезно?

Решение

Вам понадобится простая математика Matrix умножения для этого. «Калибровать» вращение, принимая текущую матрицу, когда вы запускаете приложение и переверните его, затем умножите все последующие матрицы с ним - это даст вам дельту в исходное положение.

Другие советы

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

1) Я получаю начальную матрицу вращения, используя - SensorMAnager.GetrotationMatrix (R, I, Gravity.clone (), Geomagnetic.clone ()); (Гравитация и геомагнитные матрицы сосредоточения и геомагнитных матриц. Ненно, почему я использую клоны, но должен быть какой-то причина.) 2) Теперь на любом этапе получают текущую матрицу вращения и вызовите ее R. 3). Рассчитать обратный отвод Матрица и назовите его «инициализируем». 4) Умножьте R с инициализирующим (или другим способом, вам придется понять это). 5) Получите свою окончательную ориентацию, используя SensorMAnager.Getorientation (Delta, значения)

Извините, но я полностью забыл, что делает вышеуказанный код. Я думаю, что я помню, как читать слова eleer преобразовывать где-то, когда я написал это приложение, так что это может делать. К сожалению, я не могу дать вам полный код, поскольку я, вероятно, выпустю это приложение на рынке. Однако, если вам нужна дополнительная информация, пожалуйста, дайте мне знать - я посмотрю в код и вернусь к вам.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top