Android 用zxing扫描二维码后摄像头卡住
我用结果处理器实现了二维码扫描器。它扫描得很好。但是,在第一次扫描完成后,相机就卡住了。如何实现QR扫描码,以便相机继续扫描而不会卡住 我的代码如下所示:Android 用zxing扫描二维码后摄像头卡住,android,qr-code,zxing,Android,Qr Code,Zxing,我用结果处理器实现了二维码扫描器。它扫描得很好。但是,在第一次扫描完成后,相机就卡住了。如何实现QR扫描码,以便相机继续扫描而不会卡住 我的代码如下所示: public class SimpleScannerFragment extends Fragment implements ZXingScannerView.ResultHandler { private ZXingScannerView mScannerView; @Override public View onCreateView(
public class SimpleScannerFragment extends Fragment implements ZXingScannerView.ResultHandler {
private ZXingScannerView mScannerView;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.scannerview, null);
mScannerView = (ZXingScannerView) v.findViewById(R.id.scanner_view);
return v;
}
@Override
public void onResume() {
super.onResume();
mScannerView.startCamera();
mScannerView.setResultHandler(this);
}
@Override
public void handleResult(Result rawResult) {
ParsedResult parserdResult = ResultParser.parseResult(rawResult);
Toast.makeText(getActivity(), "Contents = " + rawResult.getText() + ", Format = " + rawResult.getBarcodeFormat().toString(), Toast.LENGTH_SHORT).show();
}
@Override
public void onPause() {
super.onPause();
mScannerView.stopCamera();
}
}
根据手册()只需在处理程序中恢复cammera:
@Override
public void handleResult(Result rawResult) {
ParsedResult parserdResult = ResultParser.parseResult(rawResult);
Toast.makeText(getActivity(), "Contents = " + rawResult.getText() + ", Format = " + rawResult.getBarcodeFormat().toString(), Toast.LENGTH_SHORT).show();
mScannerView.resumeCameraPreview(this);
}
暂停相机后,必须恢复相机 测试此代码
public class SimpleScannerFragment extends Fragment implements ZXingScannerView.ResultHandler {
private ZXingScannerView mScannerView;.
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.scannerview, null);
mScannerView = (ZXingScannerView) v.findViewById(R.id.scanner_view);
return v;
}
@Override
public void onStart() {
super.onStart();
mScannerView.startCamera();
mScannerView.setResultHandler(this);
}
@Override
public void handleResult(Result rawResult) {
ParsedResult parserdResult = ResultParser.parseResult(rawResult);
Toast.makeText(getActivity(), "Contents = " + rawResult.getText() + ", Format = " + rawResult.getBarcodeFormat().toString(), Toast.LENGTH_SHORT).show();
mScannerView.resumeCameraPreview(this);
}
@Override
public void onStop() {
mScannerView.stopCamera();
super.onStop();
}
}
两行代码将使扫描仪启动相机并再次恢复,然后一次又一次地连续扫描,这是对我一直有效的最佳方法 在onPostExecute中 再次启动相机并恢复CamerapReview 如果在HandlerResult或onPostExecute中显示对话框,Dmitri的答案可能不太有效
if (scannerView != null){
scannerView.startCamera();
scannerView.setAutoFocus(true); //not necessary
scannerView.resumeCameraPreview(ScanActivity.this);
}
这将启动相机并刷新它您尚未显示任何代码或任何内容。没有人可以根据此描述说明您做错了什么。请发布您的代码。我使用fragment实现结果处理程序。在这里,我使用onPause()和onResume()启动和停止摄像头。最后,我在Activity中静态添加了fragment。您必须发布如何处理条形码结果的代码?请尝试mScannerView.startCamera(); 在句柄resulte中处理完结果后,即使我调用
resumeCameraPreview()
相机视图也会卡住。即使我调用stopCamera()
也不会发生任何事情。请帮忙
if (scannerView != null){
scannerView.startCamera();
scannerView.setAutoFocus(true); //not necessary
scannerView.resumeCameraPreview(ScanActivity.this);
}