使用barcodescanner快速实现扫码功能

  barcodescanner是一个基于ZXing和ZBar的条码扫描View,使用起来非常简单和方便。

1. 安装

  首先在build.gradle加入依赖:

compile 'me.dm7.barcodescanner:zxing:1.8.4'

2. 加入相机权限

  在AndroidManifest.xml中加入相机权限:

<uses-permission android:name="android.permission.CAMERA" />

3. 使用ZXingScannerView

  这里新建ScanActivity 用于扫描并返回结果,ScanActivity 实现ZXingScannerView.ResultHandler 接口。在onCreate() 中创建ZXingScannerView ,并在handleResult() 中获取并返回扫描结果。

public class ScanActivity extends AppCompatActivity implements ZXingScannerView.ResultHandler {
    static final String SCAN_RESULT = "scan_result";
    static final String SCAN_FORMAT = "scan_format";

    private ZXingScannerView mScannerView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        mScannerView = new ZXingScannerView(this);
        mScannerView.setAutoFocus(true);

        setContentView(mScannerView);
    }

    @Override
    public void onResume() {
        super.onResume();
        mScannerView.setResultHandler(this);
        mScannerView.startCamera();
    }

    @Override
    public void onPause() {
        super.onPause();
        mScannerView.stopCamera();
    }

    @Override
    public void handleResult(Result result) {
        Intent returnIntent = new Intent();
        returnIntent.putExtra(SCAN_RESULT, result.toString());
        returnIntent.putExtra(SCAN_FORMAT, result.getBarcodeFormat().toString());
        setResult(Activity.RESULT_OK, returnIntent);
        finish();
    }
}

这里使用mScannerView.setAutoFocus(true) 来启用自动对焦,实测部分机型不需要这一步也会启用自动对焦。然后就可以使用ScanActivity 来进行扫码,如这里所示。

【完整代码】

4. 完整代码

  完整代码可以参考这里