Любопытные показания компаса - Xamarin
Я разрабатываю приложение в Xamarin.Forms и пытаюсь определить направление, в котором находится пользователь.
Я использую следующий плагин, чтобы помочь с этим:
https://github.com/rdelrosario/xamarin-plugins/tree/master/DeviceMotion
Плагин отлично работает для рывка, высоты тона и крена устройства, однако компас, похоже, дает мне очень ложные результаты.
Он довольно сильно прыгает, сохраняя при этом неподвижность (иногда до 15-20 градусов), а также поворачивая телефон на спину и / или возвращая его в предыдущее положение, вызывает огромный скачок
Пожалуйста, рассмотрите следующий код:
CrossDeviceMotion.Current.SensorValueChanged += (s, a) =>
{
switch (a.SensorType)
{
case MotionSensorType.Accelerometer:
var X = ((MotionVector)a.Value).X.ToString();
var Y = ((MotionVector)a.Value).Y.ToString();
var Z = ((MotionVector)a.Value).Z.ToString();
DisplayAccelerometerInfo(X, Y, Z);
break;
case MotionSensorType.Compass:
var clean = a.Value.ToString().Replace("Value = ", "");
DisplayHeading(clean);
break;
}
};
CrossDeviceMotion.Current.Start(MotionSensorType.Accelerometer);
CrossDeviceMotion.Current.Start(MotionSensorType.Compass);
Теперь я предполагаю, что должен быть способ либо отфильтровать эту информацию, либо получить лучшие результаты?
По сути, я надеюсь на то, чтобы прочитать точное количество градусов от севера, чтобы я мог объединить это с азимутом другого объекта, чтобы определить, находится ли объект в поле зрения пользователей.
Надеюсь, что в моей реализации будут какие-то проблемы, или кто-то может дать совет о том, как добиться точных показаний. Любая помощь будет принята с благодарностью.