首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在安卓系统中扫描QRCode

如何在安卓系统中扫描QRCode
EN

Stack Overflow用户
提问于 2012-01-12 13:43:09
回答 8查看 31.5K关注 0票数 20

我找到了如何扫描条形码的a tutorial。但在我的应用程序中,我必须扫描二维码。如何在Android中扫描二维码?

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2012-01-12 14:02:34

代码语言:javascript
复制
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():

代码语言:javascript
复制
@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_CANCELLED){
            //handle cancel
        }
    }
}
票数 17
EN

Stack Overflow用户

发布于 2016-08-11 06:10:08

2016年更新

当前的建议是使用Android Barcode API,它工作于locally (离线),without需要服务器往返:

Barcode API可在设备上以任何方向实时检测条形码。它还可以一次检测多个条形码。

它读取以下条形码格式:

  • 一维条码: EAN-13、EAN-8、UPC-A、UPC-E、Code-39、Code-93、Code-128、ITF、Codabar
  • 2D条码:二维码、数据矩阵、PDF-417、AZTEC

它自动解析以下支持格式的二维码、数据矩阵、PDF-417和Aztec值:

  • URL
  • Contact信息(VCARD、etc.)
  • Calendar event
  • Email
  • Phone
  • SMS
  • ISBN
  • WiFi
  • Geo-location (latitude和longitude)
  • AAMVA驾驶执照/ID

查看codelab - Barcode Detection with the Mobile Vision API

票数 15
EN

Stack Overflow用户

发布于 2016-09-29 19:34:24

您可以使用zxing轻松扫描二维码,并在gradle中添加以下依赖项

代码语言:javascript
复制
compile 'com.journeyapps:zxing-android-embedded:3.1.0@aar'
compile 'com.google.zxing:core:3.2.0'

然后在你的ActivityFragment

代码语言:javascript
复制
   IntentIntegrator scanIntegrator = new IntentIntegrator(context);
                scanIntegrator.setPrompt("Scan");
                scanIntegrator.setBeepEnabled(true);
                //The following line if you want QR code
                scanIntegrator.setDesiredBarcodeFormats(IntentIntegrator.QR_CODE_TYPES);
                scanIntegrator.setCaptureActivity(CaptureActivityAnyOrientation.class);
                scanIntegrator.setOrientationLocked(true);
                scanIntegrator.setBarcodeImageEnabled(true);
                scanIntegrator.initiateScan();

然后在onActivityResult中捕获结果

代码语言:javascript
复制
   @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        IntentResult scanningResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, data);
        if (scanningResult != null) {
            if (scanningResult.getContents() != null) {
                scanContent = scanningResult.getContents().toString();
                scanFormat = scanningResult.getFormatName().toString();
            }

            Toast.makeText(this,scanContent+"   type:"+scanFormat,Toast.LENGTH_SHORT).show();

        }else{
            Toast.makeText(this,"Nothing scanned",Toast.LENGTH_SHORT).show();
        }
    }

看看这个sample project,希望它能帮到你。

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8830647

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档