getAircraftLocation() - 获取Android中Lat / Lng的“NaN”(非数字)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了getAircraftLocation() - 获取Android中Lat / Lng的“NaN”(非数字)相关的知识,希望对你有一定的参考价值。
大家下午好,
在成功与无人机建立连接(在MainActivity.java中)(获取其模型名称并启用打开按钮)之后,我打开一个新的Activity(LocationActivity.java),我必须在那里显示飞机(型号:M210) Toast消息中的位置。
我在消息中得到的内容:Lat / Lng = NaN / NaN
private FlightController mFlightController;
private double mDroneLocationLat;
private double mDroneLocationLng;
在onCreate()方法中,我创建了一个Broadcast接收器:
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();
}
}
);
}
-
问题是:
- 我是否忘记使用某些方法来获得飞机位置?
- 我需要哪些权限才能访问Manifest.xml或其他java文件中有关Aircraft位置的信息?
- 由于我的飞机在办公室里,我是否必须到外面去找它的位置(根据this thread)?
这是结构树:
答案
我找到了解决方案:这是非常愚蠢的。<!我忘了在无人机上安装GPS天线,然后到外面去获得更好的信号电平。 getAircraftLocation()是正确的,但是如果你使用这个方法得到LEVEL_0(djiFlightControllerCurrentState.getGPSSignalLevel())你将无法获得无人机位置
以上是关于getAircraftLocation() - 获取Android中Lat / Lng的“NaN”(非数字)的主要内容,如果未能解决你的问题,请参考以下文章