getAircraftLocation() - 在 Android 中获取 Lat/Lng 的 "NaN"(不是数字)

getAircraftLocation() - getting a "NaN" (Not a Number) for Lat/Lng in Android

大家下午好,

成功与无人机建立连接(在 MainActivity.java 中)(获取其型号名称并启用打开按钮),我打开一个新的 Activity ( LocationActivity.java ) 我必须在 Toast 消息中显示飞机 ( Model : 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)?

这是结构树:

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