2013-10-29 125 views
0

我试图做一个QR码阅读器zbar和,但QR码之后,应用程序崩溃后检测碰撞(!当结果= 0)zbar和QR码阅读器 - QR码阅读器

我没有变错误消息,只有一个警告:

CHECK表面信息来源创建=假formatChanged =假 SizeChanged将=假可见=假visibleChanged =真 surfaceChanged =真realSizeChanged =假redrawNeeded =假 左=假顶=假

这里是我得到的崩溃

public void onPreviewFrame(byte[] data, Camera camera) { 
     Camera.Parameters parameters = camera.getParameters(); 
     Camera.Size size = parameters.getPreviewSize(); 

     Image barcode = new Image(size.width, size.height, "Y800"); 
     barcode.setData(data); 

     int result = mScanner.scanImage(barcode); 

     if (result != 0) { 
      mCamera.cancelAutoFocus(); 
      mCamera.setPreviewCallback(null); 
      mCamera.stopPreview(); 
      mPreviewing = false; 
      SymbolSet syms = mScanner.getResults(); 
      for (Symbol sym : syms) { 
       String symData = sym.getData(); 
       if (!TextUtils.isEmpty(symData)) { 
        Intent dataIntent = new Intent(); 
        dataIntent.putExtra(SCAN_RESULT, symData); 
        dataIntent.putExtra(SCAN_RESULT_TYPE, sym.getType()); 
        setResult(Activity.RESULT_OK, dataIntent); 
        finish(); 
        break; 
       } 
      } 
     } 
    } 
+0

您在模拟器或设备上运行 –

回答

0

试试这个......对于读者的QR码....

public class QRCodeActivityTest extends Activity implements OnQRCodeReadListener {

QRCodeReaderView qrView; 
TextView tvQr; 
Image_Sql sql; 
String Description; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.qrtest_layout); 
    qrView = (QRCodeReaderView) findViewById(R.id.qRCodeReaderView1); 
    qrView.setOnQRCodeReadListener(this); 
    tvQr = (TextView) findViewById(R.id.txtqr); 
    sql= new Image_Sql(this); 
    sql.Open(); 
} 

@Override 
public void onQRCodeRead(String text, PointF[] points) { 
    // TODO Auto-generated method stub 
    Cursor desc = sql.fetchNameFromTitle(text); 
    while (desc.moveToNext()) { 
     Description = desc.getString(desc 
       .getColumnIndexOrThrow(Image_Sql.IMAGE_DESCRIPTION)); 
    } 
    if(text.equals("")) 
    { 
     Dialog d = new Dialog(this); 
     TextView tv = new TextView(this); 
     tv.setText("Please Sync Catalogue TO Display QRCode Image Information"); 
     d.setContentView(tv); 
     d.setTitle("Required Syncing.."); 
     d.show(); 
    }else 
    { 
    tvQr.setText(Description); 
    } 
} 

@Override 
public void cameraNotFound() { 
    // TODO Auto-generated method stub 

} 

@Override 
public void QRCodeNotFoundOnCamImage() { 
    // TODO Auto-generated method stub 

} 

@Override 
protected void onResume() { 
    super.onResume(); 
    qrView.getCameraManager().startPreview(); 
} 

@Override 
protected void onPause() { 
    super.onPause(); 
    qrView.getCameraManager().stopPreview(); 
} 

}

+0

您是在阅读问题还是只是发布一些随机谷歌调查结果? – Selvin

0

我做了更新我的代码和它很好用!所有!

public void onPreviewFrame(byte[] data, Camera camera) { 
    Camera.Parameters parameters = camera.getParameters(); 
    Camera.Size size = parameters.getPreviewSize(); 

    Image barcode = new Image(size.width, size.height, "Y800"); 
    barcode.setData(data); 

    int result = mScanner.scanImage(barcode); 

    if (result != 0) { 
     mCamera.cancelAutoFocus(); 
     mCamera.setPreviewCallback(null); 
     mCamera.stopPreview(); 
     mPreviewing = false; 
     SymbolSet syms = mScanner.getResults(); 
     for (Symbol sym : syms) { 
      String symData = sym.getData(); 
      Log.i("url qr code",symData); 
      Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(symData)); 
      startActivity(browserIntent); 

       break; 
     } 
    } 
}