2013年6月16日 星期日

Android App 讀取及產生 QR-Code (一)

使用 QR-Droid

想開發擁有 QR Code 產生及讀取功能的 APP,有兩套比較常用的 QR-Code App 可以讓外部 App 整合,
1. Zxing (Open Source, License: Apache 2.0 )
本篇簡介透過 QR-Droid 掃描 QR-Code,並得到 QR-Code 內容。
(雖然我比較喜歡用 ZXing... XD~)

QR-Droid 提供三種功能供外部 App 整合使用,包括:
1. Scan: 開啟 QRDroid 的掃描功能。
2. Encode: 產生 QR-Code,回傳為Local Storage 路徑 或 remote QRCode Image URL。
3. Decode: 輸入一 QR-Code 的圖片URL, 解析出內容。

1. 開啟 QR-Droid Scan Activity
Intent i = new Intent("la.droid.qr.scan");    //使用QRDroid的掃描功能
i.putExtra( "la.droid.qr.complete" , true);   //完整回傳,不截掉scheme
try {
    //開啟 QRDroid App 的掃描功能,等待 call back onActivityResult() 
    startActivityForResult(i, 0);
} catch(ActivityNotFoundException ex) {
    //若沒安裝 QRDroid,則開啟 Google Play商店,並顯示 QRDroid App 
    Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=la.droid.qr"));
    startActivity(intent);
}
2. 實作 onActivityResult,QR-Droid 掃描結果會 call back onActivityResult 方法
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        if( 0==requestCode && null!=data && data.getExtras()!=null ) {
            //掃描結果存放在 key 為 la.droid.qr.result 的值中
            String result = data.getExtras().getString("la.droid.qr.result");

            mScanResult.setText(result);  //將結果顯示在 TextVeiw 中
        }
    }

範例:

    點 Scan 按鈕,開啟 QRDroid,掃描 QR-Code 後,在 TextView 顯示 QR-Code 資訊。







3 則留言:

yuc3697 提到...

我知道QuickMark也有提供SKD提供介接喔。

elviselle 提到...

:) 謝謝大大啦~
改天來試看 QuickMark ~~

Unknown 提到...

請問版主能否提供完整程式碼,小弟最近也想學寫關於類似的APP
Thanks