相机获取值为空?
已完成我现在正在使用V4的官方示例代码。正在理解程序逻辑。在demo中的camera文件下ShootSinglePhotoView.java是单拍功能。官方demo好像是按钮复用,页面固定有三个按钮,分别是左、中、右,每次特定的功能会显示特定的按钮和文本。单说我现在正在调试的单拍,每次是中间按钮被启动,每次被点击,
handleMiddleBtnClick()
这个方法函数就会被调用,但是该函数下面的一个判断一直过不去。
protected void handleMiddleBtnClick() {
//Shoot Photo Button
ToastUtils.showToast("调试点1");//我个人的调试信息
if (isModuleAvailable()) {
ToastUtils.showToast("调试点2");
post(new Runnable() {
@Override
public void run() {
middleBtn.setEnabled(false);
}
});
DJISampleApplication.getProductInstance()
.getCamera()
.startShootPhoto(new CommonCallbacks.CompletionCallback() {
@Override
public void onResult(DJIError djiError) {
if (null == djiError) {
ToastUtils.setResultToToast(getContext().getString(R.string.success));
} else {
ToastUtils.setResultToToast(djiError.getDescription());
}
post(new Runnable() {
@Override
public void run() {
middleBtn.setEnabled(true);
}
});
}
});
}
}
跑到该判断下,设置了两个信息,发现DJISampleApplication.getProductInstance().getCamera()拿到的就是null,这是为什么?
private boolean isModuleAvailable() {
if(null == DJISampleApplication.getProductInstance()){
ToastUtils.showToast("DJISampleApplication.getProductInstance()是NULL。请检查");
}
if(null == DJISampleApplication.getProductInstance()
.getCamera()){
ToastUtils.showToast("DJISampleApplication.getProductInstance().getCamera()是NULL,请检查");
}
return (null != DJISampleApplication.getProductInstance()) && (null != DJISampleApplication.getProductInstance()
.getCamera());
}
因为涉及到大疆官方的SDK内的,我想问一下,什么时候能正常拍照?(),我目前用的无人机是M210,还没有挂载第三方的相机,这个返回NULL是因为没有挂载相机吗?无人机本身自带的摄像头只是提供视觉功能,没有拍照功能(是M210还是所有无人机都是,自带的摄像头只提供视觉,不拍照)?那如果我挂载了第三方的相机,这个返回值是不是就不会是null了?
另外还有一个疑问:我看了一下获取相机的方法,有DJISampleApplication.getAircraftInstance().getCamera();和DJISampleApplication.getProductInstance().getCamera()两种,这两种都是一样的吗?获取的相机都是第三方负载相机?因为我看了getAircraftInstance()方法,该方法拿到的Aircraft也是通过getProductInstance()拿到product后转化的。
请先登录再写评论。
评论
2 条评论