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();
}
}
);
}
-
问题是:
- 我是不是忘了使用一些方法来获取飞机位置?
我需要哪些权限才能访问 Manifest.xml 或另一个 java 文件中有关飞机位置的信息?
由于我的飞行器在办公室,我是否必须到外面去获取它的位置(根据this thread)?
这是结构树:
我找到了解决方案:非常愚蠢 >.< !我忘了在无人机上安装 GPS 天线,到外面去以获得更好的信号水平。 getAircraftLocation() 是正确的,但如果您使用此方法得到 LEVEL_0(djiFlightControllerCurrentState.getGPSSignalLevel( ) ) 你不会得到无人机位置
大家下午好,
成功与无人机建立连接(在 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();
}
}
);
}
-
问题是:
- 我是不是忘了使用一些方法来获取飞机位置?
我需要哪些权限才能访问 Manifest.xml 或另一个 java 文件中有关飞机位置的信息?
由于我的飞行器在办公室,我是否必须到外面去获取它的位置(根据this thread)?
这是结构树:
我找到了解决方案:非常愚蠢 >.< !我忘了在无人机上安装 GPS 天线,到外面去以获得更好的信号水平。 getAircraftLocation() 是正确的,但如果您使用此方法得到 LEVEL_0(djiFlightControllerCurrentState.getGPSSignalLevel( ) ) 你不会得到无人机位置