ZXing是一個用Java實作而且OpenSource專門用來判斷條碼的library,所以如果要自行開發相關判斷條碼功能的話,可以直接呼叫ZXing幫忙處理
在用之前,要先裝ZXing的BarcodeScanner.apk,這樣就不用在自己刻一個Scanner
也可以透過程式判斷是否有安裝ZXing的Scanner
Intent intent = new Intent("com.google.zxing.client.android.SCAN"); if(getPackageManager().queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY).size() == 0) { //未安裝 }
設計一個Button,並設定OnClickListener
qrcode = (Button) findViewById( R.id.qrcode ); qrcode.setOnClickListener(qrcode_scanner );
//開啟QRcode Scanner private OnClickListener qrcode_scanner = new OnClickListener(){ public void onClick(View v) { Intent intent = new Intent("com.google.zxing.client.android.SCAN"); //選擇SCAN_MODE //只判斷QRCode intent.putExtra("SCAN_MODE", "QR_CODE_MODE"); //只判斷二維條碼 intent.putExtra("SCAN_MODE", "PRODUCT_MODE"); //支援的調碼都可以判斷 intent.putExtra("SCAN_MODE","SCAN_MODE"); //呼叫ZXing Scanner,完成動作後回傳1 startActivityForResult(intent, 1); } };
onActivityResult接收
//startActivityForResult會將值傳回到onActivityResult public void onActivityResult(int requestCode, int resultCode, Intent intent) { //requestCode在startActivityForResult傳入參數時決定的,如果成功的話會傳回相同的值 if (requestCode == 1) { //成功回傳值 if (resultCode == RESULT_OK) { //ZXing回傳的內容 String contents = intent.getStringExtra("SCAN_RESULT"); //ZXing回傳的格式 String format = intent.getStringExtra("SCAN_RESULT_FORMAT"); //做其他處理 } else if (resultCode == RESULT_CANCELED) { //當還沒完成動作時,使用者倒退回上一步會判定為cancel } } }