Android 如何在UI线程上启动摄像头而不冻结屏幕?

Android 如何在UI线程上启动摄像头而不冻结屏幕?,android,qr-code,zxing,Android,Qr Code,Zxing,我在android上使用ZXingScannerView扫描二维码。 它工作正常,但我需要一个按钮,打开/关闭预览和开始/停止扫描。 我唯一的问题是,当我调用scannerView.startcamera(camId)时屏幕冻结半秒钟,直到相机启动。这对我来说确实是个问题,因为屏幕上有一个连续的动画,它会停止(冻结)一点,直到相机启动 private ZXingScannerView scannerView; qrScanButton.setOnClickListener(new

我在android上使用ZXingScannerView扫描二维码。 它工作正常,但我需要一个按钮,打开/关闭预览和开始/停止扫描。 我唯一的问题是,当我调用scannerView.startcamera(camId)时屏幕冻结半秒钟,直到相机启动。这对我来说确实是个问题,因为屏幕上有一个连续的动画,它会停止(冻结)一点,直到相机启动

    private ZXingScannerView scannerView;
    qrScanButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick( View view ) {

                if ( scannerView != null ) {

                            scannerView.stopCamera();
                            scannerView.stopCameraPreview();
                            scannerView = null;

                } else {

                            scannerView = new ZXingScannerView(MainActivity.this);
                            (( FrameLayout ) findViewById(R.id.scanner_view_container)).addView(scannerView);
                            scannerView.setResultHandler(MainActivity.this);
                            scannerView.setAutoFocus(true);
                            scannerView.startCamera(camId); // this is the only line that causes the 0.5 sec screen freeze. If I comment this out, there is no freezing (but obviously there is no camera preview)
                }
            }
        }
如何在屏幕不冻结的情况下启动相机?
它只能在UI线程上启动…

我们需要查看更多的代码我将代码添加到问题中:)对您来说,还是也冻结了?他们似乎在
onResume
中调用
startCamera
,因此我想知道这是否是关键。他们使用的是全屏示例,因此您不会注意到启动时的小冻结(这就是为什么他们在
onResume()
上启动它)。我希望能够打开/关闭阅读/预览。但我甚至注意到,这0.5秒的屏幕冻结仅仅是因为屏幕上有一个连续移动的动画,在相机预览旁边。这是一款中档手机,高端设备上没有冻结。因此,可能没有解决方案/顺便说一下,
startCamera()
开始使用相机,我不希望相机一直运行(即使我没有显示预览图像)。