ZXing Project Home

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
        }
    }
}
Categories: Android