Android 用zxing扫描二维码后摄像头卡住

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(

我用结果处理器实现了二维码扫描器。它扫描得很好。但是,在第一次扫描完成后,相机就卡住了。如何实现QR扫描码,以便相机继续扫描而不会卡住

我的代码如下所示:

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);
    }