2013-10-29 124 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; 
     } 
    } 
}