2014-03-19 254 views
3

我曾試圖用解僱我用了一個意向 的代碼,以QR碼掃描儀集成到我的應用程序的follwing斑馬線QR碼/條形碼掃描

  Intent intent = new Intent("com.google.zxing.client.android.SCAN"); 

      intent.putExtra("SCAN_MODE", "QR_CODE_MODE"); 

      startActivityForResult(intent, 0); 

//的響應收集

public void onActivityResult(int requestCode, int resultCode, Intent intent) { 
    if (requestCode == 0) { 
    if (resultCode == RESULT_OK) { 
    // Handle successful scan 
    String capturedQrValue = 
    intent.getStringExtra("SCAN_RESULT"); 
    Log.i("info", "captureQrValue :" + capturedQrValue); 
    String format = 
    intent.getStringExtra("SCAN_RESULT_FORMAT"); 
    Toast.makeText(
    One.this, 
    "Scan Result:" + capturedQrValue + " scan format :"+ format,Toast.LENGTH_SHORT).show(); 
    } else if (resultCode == RESULT_CANCELED) { 
    // Handle cancel 
    } 
    } else { 
    } 

即使我面臨的問題是,如果沒有安裝ZXing示例條形碼掃描儀,它將無法正常工作。

編輯:

  • 是否有可能使條碼掃描儀作爲我的應用程序的一部分。我不想下載條碼掃描器。

  • 也有ZXing QRCode掃描的任何相機或Android版本規範???

不工作意味着 - 它要求從谷歌播放安裝條碼掃描器,我需要避免。

+0

因此,當你說「不工作」時,你真的應該指定什麼。 –

+0

查詢更新了足夠的解釋,我希望 – Geethu

回答

4

我寧願/建議使用Zbar而不是zxing。與zbar相比,zxing需要時間閱讀qr代碼,而且您可能需要安裝自己的(zxing)應用程序 - Barcode Scanner進行掃描。我嘗試了兩種方法,並且發現zbar更好。從here下載zbar源代碼。解壓縮文件並將ZBarScannerLibrary作爲庫項目導入。將這個庫添加到你的android應用程序。另外這個在您的清單文件添加到您的scanButton`

if (check_if_camera_is_available) { 

    Intent intent = new Intent(MyWallet.this, ZBarScannerActivity.class); 
    startActivityForResult(intent, ZBAR_SCANNER_REQUEST); 
} 
else 
{ 

    Toast.makeText(MyWallet.this, "Camera Unavailable", Toast.LENGTH_SHORT).show(); 

}` 

也聲明在您的活動這些變量,否則你可能會碰到錯誤

private static final int ZBAR_SCANNER_REQUEST = 0; 
private static final int ZBAR_QR_SCANNER_REQUEST = 1; 

最後添加此

<activity android:name="com.dm.zbar.android.scanner.ZBarScannerActivity" 
       android:screenOrientation="landscape" 
       android:label="@string/app_name" /> 

<uses-permission android:name="android.permission.CAMERA"/> 
<uses-feature android:name="android.hardware.camera" android:required="false"/> 

希望這有助於:-)

+1

該項目不再維護。 [這](https://github.com/dm77/barcodescanner)將是一個更好的建議 –

2

Zxing是開源的,你可以將它包含在你的應用(但是這個庫的創建者不鼓勵這種行爲在stackoveflow問題中閱讀)

儘管您必須尊重ZXing的Apache許可證2.0。

很簡單:

  1. 包括的lib項目中的
  2. 糾正一個problem in android while generating R
  3. application在斑馬線清單必須是這樣<application/>
  4. 一些代碼

    開始的意圖或創建您自己的public class ScanActivity extends CaptureActivity並管理結果

    @Override 
    public void handleDecode(Result rawResult, Bitmap barcode, float scaleFactor){ 
        String barcodeRead = rawResult.getText(); 
    
        if(!MyValidator.isMyBarcode(barcodeRead))return; 
    
        Intent viewDetails = new Intent(this, DetailActivity.class); 
        viewDetails.putExtra(DetailActivity.EXTRA_BARCODE, barcodeRead); 
        viewDetails.putExtra(DetailActivity.EXTRA_SESSION, "some extras"); 
        startActivity(viewDetails); 
    
        finish(); 
    } 
    

最後但並非最不重要的是在您的應用程序中添加一些功勞!

+1

要清楚:我鼓勵人們重用任何開源代碼。但必須以尊重法律的方式進行。這包括尊重商標和版權。當人們複製並粘貼整個應用時,問題就出現了。只是不要那樣做。 –

+0

你是對的:)我誤解了一些帖子 –