0

I'm trying to do a Qr code reader with Zbar but the app crash after the Qr Code detect (when result != 0)

I'm not getting error message, only a warning:

CHECK surface infomation creating=false formatChanged=false sizeChanged=false visible=false visibleChanged=true surfaceChanged=true realSizeChanged=false redrawNeeded=false left=false top=false

Here is the code which I got the crash

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;
                }
            }
        }
    }
Ladessa
  • 985
  • 4
  • 24
  • 50

2 Answers2

0

try this... for Qr Reader....

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

}

Selvin
  • 6,598
  • 3
  • 37
  • 43
Abhishek Patel
  • 4,280
  • 1
  • 24
  • 38
0

I did update my code and it works great! thx all!

  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;   
        }
    }
}
Ladessa
  • 985
  • 4
  • 24
  • 50