【发布时间】:2018-02-13 16:34:06
【问题描述】:
我正在尝试创建一个 AsyncTask 它将在后台拍照,但我正在接收
java.lang.IllegalArgumentException:处理程序参数为空,但调用线程中不存在looper
在 doInBackgroung 方法中我有:
@Override
protected String doInBackground(Object[] objects) {
startBackgroundThread();
openCamera();
takePicture();
return "Executed";
}
然后在openCamera方法中:
private void openCamera() {
CameraManager manager = (CameraManager) context.getSystemService(Context.CAMERA_SERVICE);
try{
cameraId = manager.getCameraIdList()[1];
CameraCharacteristics characteristics = manager.getCameraCharacteristics(cameraId);
StreamConfigurationMap map = characteristics.get(CameraCharacteristics.SCALER_STREAM_CONFIGURATION_MAP);
assert map != null;
imageDimension = map.getOutputSizes(SurfaceTexture.class)[0];
manager.openCamera(cameraId,stateCallback,null); //It is breaking here
} catch (CameraAccessException e) {
e.printStackTrace();
}
}
有什么建议可以解决这个问题吗?
编辑:忘了说当我只使用普通 Activity 时应用程序运行良好,但现在我想将该相机代码移动到 AsyncTask 中,以便它在后台运行。 p>
【问题讨论】:
-
不要从 doinbackground 函数中调用这三个函数。
-
@greenapps 那怎么办呢?我对 Android 开发非常陌生,所以如果您能建议我如何解决它,我将不胜感激。
标签: android android-asynctask android-camera2