Я довольно много работал с этими электронными компасами на мобильных телефонах, и вполне возможно, что с вашим кодом или датчиком все в порядке.
Вместо этого вполне может быть проблема с вашей средой.Существуют магнитные поля, постоянно мешающие магнитным полям Земли.От помех электрооборудования до металлической конструкции, удерживающей здание.В конце дня компас - это просто магнит.Если вы стоите возле большого куска металла, компас будет притягиваться к нему и указывать на него, а не на северный магнитный полюс.
Попробуйте: Установите Состояние GPS , затем отключите всю фильтрацию(настройки ... GPS и датчики ... сенсорная фильтрация ... без фильтрации).Выполните калибровку (рисунок из 8 волнистых элементов), а затем переместите телефон вокруг стола ... возле мониторов, кабелей и т. Д. Вы увидите, что это сходит с ума.Информация абсолютно ненадежна.В прошлом я обнаружил, что перемещение телефона на несколько дюймов вправо полностью изменило его показания.То же самое происходит с реальным компасом.Строго говоря, «проблем» нет.Компас устройства присваивает себе самое сильное магнитное поле.Даже магнитное содержимое близлежащих камней может мешать компасу.
В качестве дополнительного теста я только что установил настоящий (ориентирование) компас на моем телефоне, на котором установлено приложение для компаса.Настоящий компас теперь указывает везде, кроме магнитного севера.Два устройства мешают друг другу.
Так что мой совет: идите куда-нибудь под открытым небом, например, в парк или поле, подальше от любых потенциальных помех и линий электропередач (если у вас есть такой, принесите настоящий компас, чтобы проверить, что приложение GPS status
указывает правильный путь), и посмотрите, работает ли ваш компас так, как вы ожидаете.
Дополнительно: Ответ от @resus также важен при калибровке.Поверните телефон несколько раз по каждой оси.Выглядит глупо, но все же правильно его калибрует.
Дополнительно 2: Возможно / практично ли использовать компас, имеющий вашего GPS?Требуется, чтобы устройство двигалось (скорость ходьбы должна быть хорошей), но вам не нужно беспокоиться о каких-либо помехах.Он должен давать точные показания, если ваш сигнал GPS хороший.
Дополнительно 3: Еще одна мысль мне пришла в голову .. Вы можете попробовать применить фильтр низких частот к датчику.Это означает, что внезапные изменения в показаниях датчика отфильтровываются ... посмотрите на этот ответ .И если это не помогает, есть множество алгоритмов в Интернете, из которых вы можете выбрать.