getAircraftLocation()-获取一个";“南”;(不是数字)用于Android中的Lat/Lng
各位下午好 在成功地与无人机建立连接(在MainActivity.java)后(获取其型号名称并启用打开按钮),我打开一个新的活动(LocationActivity.java),我必须在Toast消息中显示飞机(型号:M210)的位置 我在信息中得到的是:Lat/Lng=NaN/NaNgetAircraftLocation()-获取一个";“南”;(不是数字)用于Android中的Lat/Lng,android,location,dji-sdk,Android,Location,Dji Sdk,各位下午好 在成功地与无人机建立连接(在MainActivity.java)后(获取其型号名称并启用打开按钮),我打开一个新的活动(LocationActivity.java),我必须在Toast消息中显示飞机(型号:M210)的位置 我在信息中得到的是:Lat/Lng=NaN/NaN private FlightController mFlightController; private double mDroneLocationLat; private double mDroneLocatio
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();
}
}
);
}
-
问题是:
我找到了解决办法:这太愚蠢了>!我忘了把GPS天线装在无人机上,然后到外面去获得更好的信号电平。getAircraftLocation()是正确的,但是如果使用此方法(djiLightControllerCurrentState.getGPSSignalLevel())获得级别0,则无法获得无人机位置