Getaircraftlocation () - получение nan (не числа) для широты / долготы в android

Добрый день, ребята,

После того, как удалось установить соединение (в MainActivity.java) с дроном (получив его название модели и активировав кнопку Open), я открываю новое действие (LocationActivity.java), в котором мне нужно отобразить местоположение самолета (Модель: M210) в сообщении Toast.

Что я получаю в сообщении: Lat / Lng = NaN / NaN

private FlightController mFlightController;
private double mDroneLocationLat;
private double mDroneLocationLng;

В методе onCreate () я создал широковещательный приемник:

    IntentFilter filter = new IntentFilter();
    filter.addAction(FPVDemoApplication.FLAG_CONNECTION_CHANGE);
    registerReceiver(mReceiver, filter);

FPVDemoApplication - это java-файл, в который конструктор DJI написал несколько кодов + создал отправителя широковещательной рассылки. Вы можете найти его на Github.

Потом :

protected BroadcastReceiver mReceiver = new BroadcastReceiver() {

    @Override
    public void onReceive(Context context, Intent intent) {
        onProductConnectionChange();
    }
};

private void onProductConnectionChange()
{
    initFlightController();
}

В методе initFlightController () я использую следующие коды для получения местоположения самолета: getFlightController () и getAircraftLocation ().

BaseProduct product = FPVDemoApplication.getProductInstance();

if (product != null && product.isConnected()) {
    if (product instanceof Aircraft) {
        mFlightController = ((Aircraft) product).getFlightController();
    }
}

        // Getting Aircraft
        // ================
        if (mFlightController != null) {
            mFlightController.setStateCallback(
                    new FlightControllerState.Callback() {
                        @Override
                        public void onUpdate(FlightControllerState
                                                     djiFlightControllerCurrentState) {
                            mDroneLocationLat = djiFlightControllerCurrentState.getAircraftLocation().getLatitude();
                            mDroneLocationLng = djiFlightControllerCurrentState.getAircraftLocation().getLongitude();
                        }
                    }
            );
        }

-

Вопросы следующие:

  1. Я забыл использовать какие-то методы для определения местоположения самолета?
  2. Какие разрешения мне нужны для доступа к информации о местоположении самолета в Manifest.xml или другом java-файле?

  3. Поскольку мой самолет находится в служебном помещении, мне нужно выйти на улицу, чтобы узнать его местонахождение (согласно эта ветка)?

Вот структура дерева:

enter image description here

0
0
402
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я нашел решение: это было очень глупо>. <! Я забыл прикрепить GPS-антенну к дрону и выйти на улицу, чтобы получить лучший уровень сигнала. getAircraftLocation () был правильным, но если вы получили LEVEL_0 этим методом (djiFlightControllerCurrentState.getGPSSignalLevel ()), вы не получите местоположение дрона.

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

Как восстановить переменные с другой страницы php
Местоположение извлекается, когда приложение убито и находится в фоновом режиме с использованием fusedlocationproviderclient с ожидающим намерением, но в нерегулярное время
Разрешения на постоянное местоположение
Импорт широты и долготы в поле местоположения (класс latlonpointspatialfield) в solr
Слушатель местоположения не может быть остановлен после ondestroy ()
Unity и arcore: как разместить объект в реальном мире?
Как точно рассчитать скорость и расстояние с помощью gps? отслеживание местоположения пользователя. приложение для бега
Как получить точки долготы долготы текущего местоположения пользователей, когда приложение неактивно или закрыто в реагирующем родном android?
Flutter возможность плагина google_maps_flutter для поиска мест
Отслеживание нескольких пользователей в реальном времени в реальном месте на карте