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这样的标准阅读器!