getAircraftLocation () - получить «NaN» (не число) для Lat / Lng в Android - PullRequest
0 голосов
/ 31 октября 2018

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

После успешного установления соединения (в MainActivity.java ) с дроном (получение его имени модели и включение кнопки открытия) я открываю новое действие ( LocationActivity.java *). 1006 *) где я должен отобразить местоположение самолета ( модель: 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 написал несколько кодов + создал отправителя Broadcast. Вы можете найти его на 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

1 Ответ

0 голосов
/ 31 октября 2018

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

...