使用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. 完整代码
完整代码可以参考这里。