Я пишу некоторые программы по датчикам Android, где меня смущают показания датчика магнитометра.
Магнитометр сообщает о магнитной силе по трем осям телефона. И я заметил, что в том же месте, если направление телефона меняется, магнитные показания резко меняются. Однако, насколько я понимаю, магнитное поле Земли в определенном месте должно быть относительно стабильным, независимо от жеста размещения телефона.
Итак, мой вопрос: есть ли способ преобразовать необработанные показания 3-осевого датчика магнитометра в мировую систему координат? Данные акселерометра и ориентации также доступны на мобильных телефонах. Если это так, я подозреваю, что преобразованный магнетизм должен быть таким же, даже если направление движения телефона изменится.
Я сослался на исходные коды Android, особенно на функцию getOrientation () и функцию getRotationMatrix (). Я надеялся получить некоторую помощь от их реализации кода. Но я не очень хорошо понял. Может ли кто-нибудь объяснить принцип алгоритма этих функций?
Ссылка на код функций: http://www.netmite.com/android/mydroid/cupcake/frameworks/base/core/java/android/hardware/SensorManager.java
Спасибо! Я очень озабочен решением этого вопроса.