问题0016 - ZXING

500 阅读1分钟

相关文章

ANR

  • 在单独的线程中关闭CameraDevice

    提问: 我正在使用Android camera2创建自定义相机. cameraDevice.close()方法很慢,它会使UI冻结1秒钟.我把它放在另一个线程中,它似乎工作得很好.

    回答: 我宁愿将所有closeCamera()逻辑放在同一后台线程上.如果您为 openCamera() 提供了 Handler.
    manager.openCamera(mCameraId, mStateCallback, mBackgroundHandler);
    然后我建议将所有closeCamera()序列发布到此 mBackgroundHandler .

  • 关于android的activity中camera预览问题,涉及activity生命周期
    • 打开摄像头的时间可能会很长,勿在主线程直接打开,否则会有概率出ANR
    • 摄像头根据设备的不同可能在打开时经常会抛各种异常,记得try,catch
    activity pause过后恢复我们以前是这样做的,Camera对象需要重新生成.
    
    在onPause的时候,调用如下方法.
    public void stopPreview() {
        synchronized (mCameraLock) {
            if (mCamera != null) {
                mCamera.setPreviewCallback(null);
                mCamera.stopPreview();
                mCamera.release();
                mCamera = null;
            }         
        }
    }
    
    然后在onResume时,重新获得Camera对象(通过Camera.open()),
    再重新设置previewCallback,SurfaceHolder,Parameters等,最后startPreview.
    
    这里可以提醒一下LZ,
    **打开摄像头的时间可能会很长,勿在主线程直接打开,否则会有概率出ANR**
    **摄像头根据设备的不同可能在打开时经常会抛各种异常,记得try,catch**
    

ZXing生成的二维码,边距大小具体逻辑

遇到的异常