Любопытные показания компаса - 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);

Теперь я предполагаю, что должен быть способ либо отфильтровать эту информацию, либо получить лучшие результаты?

По сути, я надеюсь на то, чтобы прочитать точное количество градусов от севера, чтобы я мог объединить это с азимутом другого объекта, чтобы определить, находится ли объект в поле зрения пользователей.

Надеюсь, что в моей реализации будут какие-то проблемы, или кто-то может дать совет о том, как добиться точных показаний. Любая помощь будет принята с благодарностью.

0 ответов

Другие вопросы по тегам