使用QRCodeReaderView扫描二维码

现在的二维码扫描一般都是采用zxing,但是使用起来并不是很理想,因此我们需要对原始的zxing进行改进,在github上发现了一个开源项目,修改了zxing使其更好使用,如果你觉得不好使,还可以参照他的做法自己修改zxing。

其使用方法很简单:

1.将library 添加到你的项目中。

2.在activity中实现onQRCodeReadListener接口,并实现其方法。

3.确保activity是竖屏模式,同时在 manifest.xml中添加camera的访问权限。

4.将QRCodeReaderView添加到你的布局文件中。

Image

5.设置onQRCodeReadListener的回调接口,可直接在activity中实现。

    public class DecoderActivity extends Activity implements OnQRCodeReadListener {
    private TextView myTextView;
    private QRCodeReaderView mydecoderview;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_decoder);
        mydecoderview = (QRCodeReaderView) findViewById(R.id.qrdecoderview);
        mydecoderview.setOnQRCodeReadListener(this);
        myTextView = (TextView) findViewById(R.id.exampleTextView);
    }
    // Called when a QR is decoded
    // "text" : the text encoded in QR
    // "points" : points where QR control points are placed
    @Override
    public void onQRCodeRead(String text, PointF\[\] points) {
        myTextView.setText(text);
    }
    // Called when your device have no camera
    @Override
    public void cameraNotFound() {
    }
    // Called when there's no QR codes in the camera preview image
    @Override
    public void QRCodeNotFoundOnCamImage() {
    }
    @Override
    protected void onResume() {
        super.onResume();
        mydecoderview.getCameraManager().startPreview();
    }
    @Override
    protected void onPause() {
        super.onPause();
        mydecoderview.getCameraManager().stopPreview();
    }
}