getAircraftLocation()-在Android中获取纬度/经度的“ NaN”(非数字)

时间:2018-10-31 13:23:52

标签: android location dji-sdk

下午好,

成功建立与无人机的连接(在 MainActivity.java 中)(获取其型号名称并启用“打开”按钮)后,我打开一个新的活动( LocationActivity.java) ),我必须在Toast消息中显示飞机的位置(型号:M210 )。

消息内容: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. 由于我的飞机在办公室,我是否必须走到外面以获得位置(根据this thread的说法)?

这是结构树:

enter image description here

1 个答案:

答案 0 :(得分:1)

我找到了解决方案:这非常愚蠢>。<!我忘了将GPS天线安装在无人机上,而走到外面以获得更好的信号水平。 getAircraftLocation()是正确的,但是如果您使用此方法 LEVEL_0 djiFlightControllerCurrentState.getGPSSignalLevel()),则不会获得无人机位置