ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

3行代码接入Android扫码:RxTool把相机、权限与解析都接过去了

3行代码接入Android扫码:RxTool把相机、权限与解析都接过去了

3行代码接入Android扫码:RxTool把相机、权限与解析都接过去了

【免费下载链接】RxToolAndroid开发人员不得不收集的工具类集合 | 支付宝支付 | 微信支付(统一下单) | 微信分享 | Zip4j压缩(支持分卷压缩与加密) | 一键集成UCrop选择圆形头像 | 一键集成二维码和条形码的扫描与生成 | 常用Dialog | WebView的封装可播放视频 | 仿斗鱼滑动验证码 | Toast封装 | 震动 | GPS | Location定位 | 图片缩放 | Exif 图片添加地理位置信息(经纬度) | 蛛网等级 | 颜色选择器 | ArcGis | VTPK | 编译运行一下说不定会找到惊喜项目地址: https://gitcode.com/gh_mirrors/rx/RxTool

自己在 Android 项目里做扫码,坑从来不少:打开相机、申请权限、一帧一帧解析图像,代码堆完才发现对焦还是不对。RxTool扫码功能把这一整串活儿都包好了——它是 Android 工具类集合 RxTool 里的一个常用能力,相机一调用,解析结果直接回调给你,3行代码就能接入。📷

快速上手:如何引入RxTool扫码库并调用相机扫码

先把仓库拉下来,把相关模块加进你的工程,集成方式参考仓库里的说明文档:

git clone https://gitcode.com/gh_mirrors/rx/RxTool

然后是核心的3行调用,RxQrCodeTool用法到这就结束了:

RxQrCodeTool.startScan(this, new OnRxScanListener() { @Override public void onSuccess(String result) { Toast.makeText(MainActivity.this, "扫码结果:" + result, Toast.LENGTH_SHORT).show(); } });
  • 第一行RxQrCodeTool.startScan(this, ...):把当前页面交给工具类,扫码界面直接弹出来,相机也由它负责打开
  • new OnRxScanListener():这是结果监听器,整个3行代码扫码的回调出口
  • onSuccess(String result):解析成功后拿到的就是你要的字符串,这里 Toast 只是演示,换成你自己的业务逻辑即可

幕后原理:Android扫码实现到底藏在哪里

扫码的核心代码都在RxFeature模块的 scaner 包里,见 RxFeature/src/main/java/com/tamsiree/rxfeature/scaner/。你调一下 startScan 背后,它在做这几件麻烦事:

  • 权限处理:进入扫码页先检查相机权限,没授权会自动发起请求
  • 相机调用:CameraManager统一管相机的打开、预览与关闭,AutoFocusCallback循环请求自动对焦,PreviewCallback把每一帧预览数据送进解析流程
  • 图像识别:帧数据先做旋转,再构建 YUV 亮度源,经HybridBinarizer二值化后交给 ZXing 的MultiFormatReader解码
  • 结果反馈:识别成功会播放提示音并震动,然后把结果通过监听器抛回你的回调

扫码页面对应 ActivityScanerCode.kt,Demo 里的 ActivityCodeTool.kt 点一下扫码入口就会跳到它。

如果你想更进一步

扫码界面布局文件在哪

如果你想把扫码界面改成自己的风格,直接打开 RxFeature/src/main/res/layout/activity_scaner_code.xml。

里面capture_preview是相机预览区,scan_mask是四周压暗的蒙层,capture_crop_layout是中间的扫描框,顶部还挂着闪光灯、相册识别、返回三个按钮。改大小、挪位置、换颜色,都在这一个文件里搞定。

支持条形码怎么做

扫码不只认二维码,条形码也是默认的。ActivityScanerCode的initDecode()里,EAN-13/EAN-8、UPC-A/E、CODE-39/93/128、ITF、QR_CODE、DATA_MATRIX 都注册进了MultiFormatReader。

  • 想收窄识别范围:把decodeFormats列表改成只留你需要的类型
  • 想识别相册里的静态码:调用RxQrBarTool.decodeFromPhoto(bitmap),它会自动缩图防内存溢出再解码

如何提升扫码成功率

  • 调大扫描框:改capture_crop_layout的尺寸,Activity 会把cropWidth/cropHeight同步给CameraManager.FRAME_WIDTH/FRAME_HEIGHT,框越大,离得远的码越容易扫上
  • 打开闪光灯:点顶部的top_mask按钮即可开灯,暗光环境下识别率明显提升
  • 对焦保持:AutoFocusCallback会持续请求对焦,如果你的机型对焦迟钝,可以从这里入手调参

收尾

想继续深挖 RxTool扫码 的更多细节,或者看看它还有哪些工具,去翻项目的官方文档就好,功能列表都写得明明白白。克隆仓库跑一遍 RxDemo,三分钟你就能亲手体验完整的扫码流程。

【免费下载链接】RxToolAndroid开发人员不得不收集的工具类集合 | 支付宝支付 | 微信支付(统一下单) | 微信分享 | Zip4j压缩(支持分卷压缩与加密) | 一键集成UCrop选择圆形头像 | 一键集成二维码和条形码的扫描与生成 | 常用Dialog | WebView的封装可播放视频 | 仿斗鱼滑动验证码 | Toast封装 | 震动 | GPS | Location定位 | 图片缩放 | Exif 图片添加地理位置信息(经纬度) | 蛛网等级 | 颜色选择器 | ArcGis | VTPK | 编译运行一下说不定会找到惊喜项目地址: https://gitcode.com/gh_mirrors/rx/RxTool

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进