Android 生成二维码踩坑之二维码无法正常识别扫码

14 篇文章 0 订阅
8 篇文章 0 订阅

网上Android生成二维码的文章很多,我看的一帖是 Android生成自定义二维码,这篇文章详细讲解了如何生成一个二维码。

我在实际使用的时候遇到一个问题,就是生成的二维码是有问题的,扫码无效果。。。

我的二维码展示的时候背景是个黑色,生成是黑白相间的二维码,展示是没问题的,尝试修改找寻问题。

发现问题的原因竟然是我的margin的值有问题

            if (!TextUtils.isEmpty(margin)) {
                hints.put(EncodeHintType.MARGIN, margin);
            }
            BitMatrix bitMatrix = new QRCodeWriter().encode(content, BarcodeFormat.QR_CODE, width, height, hints);

最开始我用的margin值是0,一直扫不出结果,后面我把margin值改为2,生成的二维码有一个白色的边框,再次扫描就可以了。

猜测应该是我的显示二维码的大背景是个黑色,然后二维码也是黑白相间的,扫码颜色不易识别,加一个白色的边框就容易识别了

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android操作系统中实现二维码生成码功能是一个常见的需求,而为了方便实现该功能,可以选择使用二维码插件进行开发。Android平台上比较常用的二维码插件包括Zxing和QRCode等。 首先,在使用插件前需要在项目Gradle中添加插件依赖,就以Zxing为例,在项目build.gradle中添加依赖: ``` dependencies { implementation 'com.google.zxing:core:3.3.3' } ``` 生成二维码可以通过调用Zxing库中的MultiFormatWriter类来实现,示例代码: ``` MultiFormatWriter multiFormatWriter = new MultiFormatWriter(); BitMatrix bitMatrix = multiFormatWriter.encode(textToEncode, BarcodeFormat.QR_CODE, qrCodeWidth, qrCodeHeight); BarcodeEncoder barcodeEncoder = new BarcodeEncoder(); Bitmap bitmap = barcodeEncoder.createBitmap(bitMatrix); ``` 其中,textToEncode表示要生成二维码的文本信息,qrCodeWidth和qrCodeHeight表示二维码的宽度和高度,一般情况下可以设置为200x200。 码功能需要调用Zxing库中的IntentIntegrator类,在代码中使用: ``` private void startScan() { IntentIntegrator integrator = new IntentIntegrator(this); integrator.setDesiredBarcodeFormats(IntentIntegrator.QR_CODE_TYPES); integrator.setPrompt("Scan a QRcode"); integrator.setCameraId(0); integrator.setBeepEnabled(false); integrator.initiateScan(); } ``` 其中,setDesiredBarcodeFormats表示需要识别的码的类型,setPrompt表示码时的提示信息,setCameraId表示使用的相机,setBeepEnabled表示是否有声音提示。 当描完成后,需要在onActivityResult()方法中处理描结果,示例代码: ``` @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { IntentResult result = IntentIntegrator.parseActivityResult(requestCode, resultCode, data); if(result != null) { if(result.getContents() == null) { Log.d(TAG, "Cancelled"); } else { Log.d(TAG, "Scanned: " + result.getContents()); } } else { super.onActivityResult(requestCode, resultCode, data); } } ``` 在上述代码中,通过解析描结果的IntentResult类来获取识别出的二维码信息,如果result.getContents()为null则表示码取消,否则就可以得到描结果了。 总之,对于Android平台上的二维码生成码功能实现,通过使用Zxing或QRCode等插件可以方便快捷地实现该需求,即通过调用插件提供的API来生成识别二维码即可。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值