У меня есть пара предложений для вас:
1) Ваше устройство не может быть откалибровано . Чтобы сделать это, переместите это в форме 8 ( см. Это ). Если вы этого не сделаете, если ваше устройство откалибровано или нет, проведите некоторые тесты, наведя устройство на некоторое известное направление кардинальной точки и сравните значения. Как правило, если устройство не откалибровано, вы увидите большие изменения в значении азимута для небольших поворотов. Вот о чем я бы беспокоился.
Теперь, не забывайте, что датчик указывает на магнитный север, а не на истинный север ! Это различие известно как склонение магнитного поля, и его значение изменяется от места к месту и время от времени из-за изменений в магнитном поле Земли. Это приложение может вычислить некоторые значения для вас с относительной точностью. Я бы не стал сильно беспокоиться об этом, поскольку склонение, как правило, невелико, но вы, возможно, ищете хорошую точность (где я живу, сейчас склонение составляет 3º).
2) Держитесь подальше от металлических предметов или предметов, создающих сильное магнитное поле . Например, не проводите тесты, если ваш телефон находится рядом с компьютером или какими-либо физическими клавиатурами! Это чистый яд для тестирования компаса-геолокации. Некоторые приложения могут измерять напряженность магнитного поля (если устройство поддерживает его). Когда вы приблизитесь к металлическому материалу, вы почувствуете более высокие ценности и сильные изменения в направлениях. Для забавы также есть некоторые " металлоискатели ": это приложение распознает изменения в магнитном поле и вибрирует, когда вы находитесь рядом с "металлическим предметом" или вещами, которые магнитно мешают устройству.
3) Не забудьте обновить пеленг, когда вы наклоняете свое устройство в альбомный режим. ( статья обязательна к прочтению! ) Это потому, что значение азимута основано на повороте перпендикулярной оси к плоскости телефона. Когда вы поворачиваете устройство в горизонтальное положение, это значение изменяется на +/- 90º! Это не решается отключением ландшафтного режима приложения! Вам придется определять его программно, анализируя повороты вокруг двух других осей (тангаж и крен). Это не тривиально, но в сети есть несколько примеров.
edit: Если вас интересует какой-то код, посмотрите Mixare , это фреймворк дополненной реальности с открытым исходным кодом под GPL3 для Android. Посмотрите на их код относительно ориентации, геолокации компаса и ориентации.
PS: У меня нет никакой связи с создателями упомянутых приложений.