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