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