\n
\n
\n
\nTích hợp tính năng scan QRcode, Barcode một cách cực kì đơn giản trong ứng dụng android nhờ vào thư viện barcodescanner là một giải pháp không hề tồi. Thư viện này thường được Mona Media sử dụng trong các dự án lập trình di động
\n
\nBản chất thì thư viện barcode scanner sử dụng core là thư viện zxing – một thư viện scan/encode mã QR/barcode cực kỳ khủng vậy nên bạn hoàn toàn yên tâm về khả năng đọc và độ chính xác. bên cạnh đó bạn có thể lựa chọn phiên bản sử dụng core là ZBar 1 thư viện khủng không kém zxing.
\n
\nTích hợp tính năng scan QRcode, Barcode một cách cực kì đơn giản trong ứng dụng android nhờ vào thư viện barcodescanner là một giải pháp không hề tồi. Thư viện này thường được Mona Media sử dụng trong các dự án lập trình di động
\n
\nBản chất thì thư viện barcode scanner sử dụng core là thư viện zxing – một thư viện scan/encode mã QR/barcode cực kỳ khủng vậy nên bạn hoàn toàn yên tâm về khả năng đọc và độ chính xác. bên cạnh đó bạn có thể lựa chọn phiên bản sử dụng core là ZBar 1 thư viện khủng không kém zxing.
\n
Để test nhanh, bạn có thể tạo mã QR mẫu online (link, vCard, Wi-Fi, VietQR) rồi quét thử bằng app vừa build, khỏi phải tự ghép chuỗi.
Bước 1: Thêm dependencies
\n
compile 'me.dm7.barcodescanner:zxing:1.9.8'
\n
\n
Bước 2: Cấp quyền truy cập camera
\nTất nhiên, ứng dụng đọc QR Code thì cần có camera để soi nên bạn thêm dòng này vào manifest
\n
<uses-permission android:name="android.permission.CAMERA" />
\n
\nVới target version >=23 bạn cần phải implement việc request permission runtime để truy cập camera.
\n
Bước 3: Sử dụng ZXingScannerView
\nTạo Activity và sử dụng custom view ZXingScannerView. bạn sử dụng view như là các view bình thường khác. có các custom attributes để config hiển thị của màn hình camera.
\n
<me.dm7.barcodescanner.zxing.ZXingScannerView
\n android:id="@+id/scannerView"
\n android:layout_width="match_parent"
\n android:layout_height="match_parent"
\n app:borderColor="#FFF"
\n app:borderLength="24dp"
\n app:borderWidth="4dp"
\n app:laserColor="#00ff77"
\n app:maskColor="@android:color/transparent"
\n app:roundedCorner="false"
\n app:squaredFinder="true"/>
\n
\nBước 4: Viết code java
\n
public class SimpleScannerActivity extends Activity implements ZXingScannerView.ResultHandler {
\n private ZXingScannerView mScannerView;
\n
\n @Override
\n public void onCreate(Bundle state) {
\n super.onCreate(state);
\n setContentView(R.layout.scanner_activity);
\n mScannerView = findViewById(R.id.scannerView); // Programmatically initialize the scanner view
\n }
\n
\n @Override
\n public void onResume() {
\n super.onResume();
\n mScannerView.setResultHandler(this); // Register ourselves as a handler for scan results.
\n mScannerView.startCamera(); // Start camera on resume
\n }
\n
\n @Override
\n public void onPause() {
\n super.onPause();
\n mScannerView.stopCamera(); // Stop camera on pause
\n }
\n
\n @Override
\n public void handleResult(Result rawResult) {
\n // Do something with the result here
\n Log.v(TAG, rawResult.getText()); // Prints scan results
\n Log.v(TAG, rawResult.getBarcodeFormat().toString()); // Prints the scan format (qrcode, pdf417 etc.)
\n
\n // If you would like to resume scanning, call this method below:
\n mScannerView.resumeCameraPreview(this);
\n }
\n}
\n
\nKhi có kết quả thì sẽ gọi call back vào method handleResult()
\n
\n
\n
Nâng cao
\nNgoài ra bạn có thể tùy chỉnh nâng cao như bật flash, autofocus, chỉ định camera …
\n
// Toggle flash:
\nvoid setFlash(boolean);
\n
\n// Toogle autofocus:
\nvoid setAutoFocus(boolean);
\n
\n// Specify interested barcode formats:
\nvoid setFormats(List<BarcodeFormat> formats);
\n
\n// Specify the cameraId to start with:
\nvoid startCamera(int cameraId);
\n
\n
Support formats
\n
BarcodeFormat.UPC_A
\nBarcodeFormat.UPC_E
\nBarcodeFormat.EAN_13
\nBarcodeFormat.EAN_8
\nBarcodeFormat.RSS_14
\nBarcodeFormat.CODE_39
\nBarcodeFormat.CODE_93
\nBarcodeFormat.CODE_128
\nBarcodeFormat.ITF
\nBarcodeFormat.CODABAR
\nBarcodeFormat.QR_CODE
\nBarcodeFormat.DATA_MATRIX
\nBarcodeFormat.PDF_417
\n
\n
\n

