簡體   English   中英

ZXing二維碼/條碼掃描

[英]ZXing QR Code/Barcode scanning

我試圖通過觸發一個意圖將QRCode掃描儀集成到我的應用程序中。我使用的代碼是以下代碼

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

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

            startActivityForResult(intent, 0);

// Response集合

  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樣品條形碼掃描儀,我也遇到了無法正常工作的問題。

編輯:

  • 是否可以將條形碼掃描儀作為我的應用程序的一部分。 我對下載Barcode Scanner不感興趣。

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

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

我更喜歡/建議使用Zbar而不是zxing。 與zbar相比,zxing需要時間來讀取qr代碼,而且你可能需要安裝自己的(zxing)應用程序 - 條碼掃描器進行掃描。 我試過兩個,我發現zbar更好。 這里下載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"/>

希望這可以幫助 :-)

Zxing是開源的,您可以將其包含在您的應用程序中(但此lib的創建者不鼓勵在stackoveflow問題中閱讀此行為)

雖然您必須尊重ZXing的Apache許可證2.0。

很簡單:

  1. 在項目中包含lib
  2. 在生成R更正android中問題的一些代碼
  3. zxing manifest中的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(); } 

最后但並非最不重要的是在你的應用程序中為這個lib添加一些功勞!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM