由于FPVwidget和FPVOverLayWidget没有为Zenmuse XT正确进行设置和OSD,我尝试将设置活动设置为可以更改某些基本设置的位置。如果没有连接Zenmuse XT,我不想启用这些设置。所以我一直在编写一些测试代码来检查功能,并且设置活动一直与logcat中的错误一起崩溃说:
java.lang.NullPointerException:尝试调用虚方法 ' java.lang.String dji.sdk.camera.Camera.getDisplayName()'在null 对象参考
这是我的代码:
thermalColorPalletSwitch=(Switch)findViewById(R.id.thermalColorPalletSwitch);
if(FPVApplication.getProductInstance().getCamera().getDisplayName().equals(Camera.DisplayNameXT)){
thermalColorPalletSwitch.setEnabled(false);
}else{
thermalColorPalletSwitch.setEnabled(false);
}

我也试过这个代码的结果相同:
thermalColorPalletSwitch=(Switch)findViewById(R.id.thermalColorPalletSwitch);
if(FPVApplication.getProductInstance().getCamera() != null){
if(FPVApplication.getProductInstance().getCamera().getDisplayName().equals(Camera.DisplayNameXT)){
thermalColorPalletSwitch.setEnabled(true);
}else{
thermalColorPalletSwitch.setEnabled(false);
}
}

我不确定我做错了什么。
我还尝试了以下代码,当我在Inspire 1上交换Zenmuse X3和Zenmuse XT时,它按预期工作。但是,如果应用程序没有连接到遥控器,则设置活动仍然会崩溃。
thermalColorPalletSwitch=(Switch)findViewById(R.id.thermalColorPalletSwitch);
if(FPVApplication.getProductInstance().getCamera() != null){
if(FPVApplication.getProductInstance().getCamera().isThermalCamera()){
thermalColorPalletSwitch.setEnabled(true);
}else{
thermalColorPalletSwitch.setEnabled(false);
}
}

答案 0 :(得分:0)
我明白了。因此,在你开始检查是否有关于相机的任何信息之前,你必须检查是否有与DJI产品的连接。
此代码不会崩溃。
thermalColorPalletSwitch=(Switch)findViewById(R.id.thermalColorPalletSwitch);
if(null != FPVApplication.getProductInstance() && FPVApplication.getProductInstance().isConnected()){
if(FPVApplication.getProductInstance().getCamera().isThermalCamera()){
thermalColorPalletSwitch.setEnabled(true);
}else{
thermalColorPalletSwitch.setEnabled(false);
}
}