安卓相机错误5001

7

我刚在我的安卓应用程序加载相机对象时遇到了“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) {
            // ...
        }
    }
}

1
我在我的活动中切换相机,我认为我需要在连续的stopPreview()startPreview()之间调用release() - shkschneider
不行,这会在某些设备上引起“AndroidRuntime: FATAL EXCEPTION: main”的错误。 - shkschneider
我也遇到了同样的问题,使用相同的设备和Android版本。通过在mCamera.startPreview之前调用mCamera.setPreviewDisplay来解决了这个问题。 - Boris Smus
@BorisSmus 这就是我正在做的事情。再说一遍,那个 bug 只出现了一次,但我不得不重新启动设备。我想要理解发生了什么,并确保它不会再次发生。我会添加一些代码。 - shkschneider
同样的问题,其他网站:https://forums.motorola.com/posts/72cdd4b9d0 - shkschneider
1个回答

1
正如我所指出的,这个错误似乎只在Moto X上出现,并且似乎特定于某些用例。
在运行Android 4.4.2的该设备上,它只是偶尔发生。
对我来说,这只是一个具体/过于局限的错误。
已关闭。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接