[英]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。
很簡單:
R
更正android中的問題的一些代碼 application
必須與此<application/>
類似 啟動意圖或創建自己的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.