Использование акселерометра Android без плоского устройства
-
27-09-2019 - |
Вопрос
Я играю с акселерометром 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) будут ваши ссылки (нулевые значения) и вносят изменения, когда Вы идете выше или ниже тех показаний ... Надеюсь, это поможет кому-нибудь ... ура