Android,如何阅读我的应用程序中的QR码?

在我的应用程序中,我需要阅读二维码。 我search了networking,发现了Zing代码,但很多开发者使用它的问题,它似乎是越野车!

如果我假设我的客户在其设备上安装了qr阅读器,那么如何使用这些应用程序并通过隐含的意图调用它们?

如果用户没有任何qr阅读器,那么应​​用程序会发生什么? 如果它崩溃,我可以请求用户下载例如QrDroid和之后使用它?

try { Intent intent = new Intent("com.google.zxing.client.android.SCAN"); intent.putExtra("SCAN_MODE", "QR_CODE_MODE"); // "PRODUCT_MODE for bar codes startActivityForResult(intent, 0); } catch (Exception e) { Uri marketUri = Uri.parse("market://details?id=com.google.zxing.client.android"); Intent marketIntent = new Intent(Intent.ACTION_VIEW,marketUri); startActivity(marketIntent); } 

onActivityResult():

 @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == 0) { if (resultCode == RESULT_OK) { String contents = data.getStringExtra("SCAN_RESULT"); } if(resultCode == RESULT_CANCELED){ //handle cancel } } } 

如果用户没有任何qr阅读器,那么应​​用程序会发生什么? 如果它崩溃,我可以请求用户下载例如QrDroid和之后使用它?

有趣的是,Google现在推出了Mobile Vision API ,它们本身就集成在播放服务中。

在您的Gradle文件中只需添加:

 compile 'com.google.android.gms:play-services-vision:9.6.1' 

采取从这QR码教程 。

我创build了一个简单的示例教程。 您可以阅读并在您的应用程序中使用。

http://ribinsandroidhelper.blogspot.in/2013/03/qr-code-reading-on-your-application.html

通过此链接,您可以下载qrcode库项目并导入到您的工作区,并将库添加到您的项目中

并将此代码复制到您的活动

  Intent intent = new Intent("com.google.zxing.client.android.SCAN"); startActivityForResult(intent, 0); public void onActivityResult(int requestCode, int resultCode, Intent intent) { if (requestCode == 0) { if (resultCode == RESULT_OK) { String contents = intent.getStringExtra("SCAN_RESULT"); String format = intent.getStringExtra("SCAN_RESULT_FORMAT"); Toast.makeText(this, contents,Toast.LENGTH_LONG).show(); // Handle successful scan } else if (resultCode == RESULT_CANCELED) { //Handle cancel } } } 

Zxing是执行Qr码扫描和生成的优秀库。 以下实现使用Zxing库扫描QR码图像不要忘记在gradle中添加以下依赖项

编译'me.dm7.barcodescanner:zxing:1.9'

 public class QrCodeScanner extends AppCompatActivity implements ZXingScannerView.ResultHandler { private ZXingScannerView mScannerView; @Override public void onCreate(Bundle state) { super.onCreate(state); // Programmatically initialize the scanner view mScannerView = new ZXingScannerView(this); // Set the scanner view as the content view setContentView(mScannerView); } @Override public void onResume() { super.onResume(); // Register ourselves as a handler for scan results. mScannerView.setResultHandler(this); // Start camera on resume mScannerView.startCamera(); } @Override public void onPause() { super.onPause(); // Stop camera on pause mScannerView.stopCamera(); } @Override public void handleResult(Result rawResult) { // Do something with the result here // Prints scan results Logger.verbose("result", rawResult.getText()); // Prints the scan format (qrcode, pdf417 etc.) Logger.verbose("result", rawResult.getBarcodeFormat().toString()); //If you would like to resume scanning, call this method below: //mScannerView.resumeCameraPreview(this); Intent intent = new Intent(); intent.putExtra(AppConstants.KEY_QR_CODE, rawResult.getText()); setResult(RESULT_OK, intent); finish(); } } 

使用像ZXing的QR库…我有非常好的经验,QrDroid是非常buggier。 如果你必须依靠外部阅读器,依靠像Google Goggles这样的标准阅读器!