我刚在我的安卓应用程序加载相机对象时遇到了“Error 5001”错误。
E/Camera: Error 5001
我甚至无法通过“主页”按钮退出应用程序,它会冻结90秒钟。我找不到有关该错误的任何文档。
5001是什么意思?
90秒后,logcat记录如下:
W/CameraBase: Camera service died!
现在我无法正常运行应用程序。 屏幕变成了绿色,并且无法加载相机。
重新启动解决了相机问题,但我想知道:
- 实际上发生了什么
- 如何避免
设备是带有原始Android 4.4.2的Moto X。
感谢您提供的任何信息。
编辑
public final class BarcodePreview extends SurfaceView implements SurfaceHolder.Callback {
private Activity mActivity;
private SurfaceHolder mSurfaceHolder;
private Camera mCamera;
private PreviewCallback mPreviewCallback;
private AutoFocusCallback mAutoFocusCallback;
public BarcodePreview(final Activity activity, final Camera camera, final PreviewCallback previewCallback, final AutoFocusCallback autoFocusCallback) throws Exception {
super(activity);
mActivity = activity;
mCamera = camera;
mPreviewCallback = previewCallback;
mAutoFocusCallback = autoFocusCallback;
mSurfaceHolder = getHolder();
if (mSurfaceHolder == null) {
// ...
}
mSurfaceHolder.addCallback(this);
}
@Override
public void surfaceCreated(final SurfaceHolder surfaceHolder) {
try {
mCamera.setPreviewDisplay(surfaceHolder);
}
catch (Exception e) {
// ...
}
}
@Override
public void surfaceDestroyed(final SurfaceHolder surfaceHolder) {
// ...
}
@Override
public void surfaceChanged(final SurfaceHolder surfaceHolder, final int format, final int width, final int height) {
if (mSurfaceHolder.getSurface() == null) {
// ...
return ;
}
try {
mCamera.stopPreview();
// ...
mCamera.setPreviewDisplay(mSurfaceHolder);
mCamera.setPreviewCallback(mPreviewCallback);
mCamera.startPreview();
mCamera.autoFocus(mAutoFocusCallback);
}
catch (Exception e) {
// ...
}
}
}
stopPreview()
和startPreview()
之间调用release()
。 - shkschneidermCamera.startPreview
之前调用mCamera.setPreviewDisplay
来解决了这个问题。 - Boris Smus