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