Android实现扫描二维码条形码,实现扫描快递单,相册图片识别快递单 最慢3秒出回调结果

首先给出我的参考链接地址
Android超方便 集成 Zxing实现扫一扫,闪光灯,生成二维码图片,解析二维码(条码)等功能
此篇文章发布时间结点是17年。。
当前文章发布时间节点是24年。。
请注意时间节点,以免造成原生版本导致的版本冲突问题

为什么要说时间节点问题呢?

随着时间发展,功能组件肯定是不断迭代的,就会导致可能会因为版本问题运行不了,我就是“受害者”,所以有了这篇文章。

可实现功能

当前依赖可实现以下功能,如不符合读者需求可跳过,节约宝贵的时间

  1. 摄像头扫描二维码条形码
  2. 打开相册识别图中的二维码条形码
  3. 可自定义设置打开相册时的界面
  4. 可自定义相册按钮和闪光灯按钮

如何使用

  1. minSdk 版本设置成 24 以上
    2.
  2. 引入jitpack库
maven { url 'https://jitpack.io' }
implementation  'com.github.zch-live:zxinglib:1.0.6'
  1. 调用扫描或者识别图片
Intent intent = new Intent(MainActivity.this, CaptureActivity.class);ZxingConfig config = new ZxingConfig();//config.setShowbottomLayout(true);//底部布局(包括闪光灯和相册)//config.setPlayBeep(true);//是否播放提示音//config.setShake(true);//是否震动//config.setShowbottomLayout(true);//底部布局(包括闪光灯和相册)//config.setPlayBeep(true);//是否播放提示音//config.setShake(true);//是否震动config.setShowAlbum(false); //是否显示相册config.setShowBack(true); //显示左上角返回//config.setShowFlashLight(true);//是否显示闪光灯intent.putExtra(Constant.INTENT_ZXING_CONFIG, config);startActivityForResult(intent, 100866);

在这里插入图片描述

  1. 接收结果
 @Overrideprotected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {super.onActivityResult(requestCode, resultCode, data);if (resultCode == 10086){if (data != null){String content = data.getStringExtra(Constant.CODED_CONTENT);if (content == null || content.contains("失败")){//识别失败tv3.setText("请提供真实,清晰,完整的条码");//失败了,终极解决办法,判断是不是高版本机型 > android11 ,有没有所有文件访问权限,建议只请求一次// 请求一次不要通过是否已开启访问权限去判断,亲测无效果// 建议通过本地存储是否请求过来限制访问次数(敏感权限)if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {//弹窗提示去开启所有文件访问权限Intent intent = new Intent(Settings.ACTION_MANAGE_ALL_FILES_ACCESS_PERMISSION);startActivity(intent);}}else {//识别成功tv3.setText("扫描结果:" + content);}}}}

在这里插入图片描述

完结撒花,以上就是识别步骤了

GitHub地址

使用说明1

打开界面的时候,通过传入参数去动态设置想要达到的效果
在这里插入图片描述
具体参数如下
在这里插入图片描述
其实摄像头扫描功能是比较好做的,因为大多数底层还是使用 Zxing ,如果你只需要摄像头扫描,可以看下这篇文章 第三方ZXing库zxing-android-embedded使用及自定义

主要复杂的是打开相册对图片的识别,以及识别过程中所产生的损耗

目前项目主要是识别快递单号中的条形码,在参考文章中,大多数只是对单独显示的条形码图片或者二维码图片才能识别出内容,当一整张快递单号放上去时,会因为转码量过大等,造成识别失败(图片源自网络,如有侵权联系即刻删除,无商业用途)

所以再次基础上进行改造,可对整张快递单进行扫描出结果,亲测识别结果最慢3秒可给出回调

在这里插入图片描述

原理如下:

  1. 识别图片时针对条形码进行识别
  2. 整张快递单号进行切割分段识别
  3. 分段切割5-8次,过程中有识别成功者中断识别,进行回调
使用说明2

依赖中已经有默认的界面,如不符合当前开发需求,可支持自定义界面,
要注意的是自定义界面时要与主要控件 id 对应,否则无效果(并不会报错)

默认打开相册识别界面如下
在这里插入图片描述

具体使用如下
在这里插入图片描述

/*如果需要自定义选择相册界面,使用此代码,在跳转之前调用即可选择按钮要使用 TextView 并且id 必须命名为 albumButton选择按钮要使用 TextView 并且id 必须命名为 tvLoading*/View photoView = LayoutInflater.from(this).inflate(R.layout.photo_view, null);// 通过 findViewById 去设置自己想要显示的内容PhotoView.setPhotoView(photoView);

对应id如下

在这里插入图片描述

使用说明3

使用前别忘了动态申请下权限,文中获取权限代码如下
部分高版本手机会存在 /0 目录下图片识别失败的情况,可以试下上述回调代码中终极解决办法-所有文件访问权限

 /*动态申请权限操作*/private boolean isPermissionRequested = false;public void requestPermission() {if (Build.VERSION.SDK_INT >= 23 && !isPermissionRequested) {isPermissionRequested = true;ArrayList<String> permissionsList = new ArrayList<>();String[] permissions = {//在这里加入你要使用的权限Manifest.permission.CAMERA,Manifest.permission.READ_EXTERNAL_STORAGE,Manifest.permission.WRITE_EXTERNAL_STORAGE,};for (String perm : permissions) {if (PackageManager.PERMISSION_GRANTED != checkSelfPermission(perm)) {permissionsList.add(perm);// 进入这里代表没有权限.}}if (!permissionsList.isEmpty()) {String[] strings = new String[permissionsList.size()];requestPermissions(permissionsList.toArray(strings), 0);}}}

结尾: 如有其他问题可评论共同讨论

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/459442.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue3中mitt和pinia的区别和主要用途,是否有可重合的部分?

在 Vue 中&#xff0c;Mitt 和 Pinia 是两个不同的工具&#xff0c;它们的主要用途和功能有所不同&#xff0c;但在某些方面也存在重合的部分。 区别 Mitt&#xff1a; Mitt 是一个简单而强大的事件总线库&#xff0c;用于在组件之间进行事件的发布和订阅。 它提供了一种简洁…

雷池社区版compose配置文件解析-mgt

在现代网络安全中&#xff0c;选择合适的 Web 应用防火墙至关重要。雷池&#xff08;SafeLine&#xff09;社区版免费切好用。为网站提供全面的保护&#xff0c;帮助网站抵御各种网络攻击。 compose.yml 文件是 Docker Compose 的核心文件&#xff0c;用于定义和管理多个 Dock…

迭代器边遍历边删除存在的问题

迭代器边遍历边删除存在的问题以及原理 01-问题 ​ 我们先来看看如下代码 public static void main(String[] args) {List<Integer> list new ArrayList<>();list.add(5);list.add(4);list.add(3);list.add(2);list.add(7);list.add(0);Iterator<Integer>…

在 Vue 中如何自动导入项目中的 less 和 scss 变量和文件

在开发时每次使用公共的 less 变量和类名&#xff0c;都要单独导入一下。当文件过多时&#xff0c;会让代码特别的冗余&#xff0c;设置自动导入后会方便很多。 正常使用&#xff1a; <style scoped lang"less"> // 引入 less 文件 import /styles/mixins.le…

【YOLOv11[基础]】实例分割 + 跟踪

Ultralytics YOLO11实例分割涉及识别和概述图像中的单个对象,提供对空间分布的详细了解。与语义分割不同,它唯一地标记并精确地描绘每个对象,这对于物体检测和医学成像等任务至关重要。 在Ultralytics包中有两种类型的实例分割跟踪: 类对象的实例分割:每个类对象被分配一…

list 的实现

上图的下述代码实现&#xff1a; void push_back(const T& x) {Node* newnode new Node(x);Node* tail _head->_prev;tail->_next newnode;newnode->_prev tail;newnode->_next _head;_head->_prev newnode; }顺序表可以用原生指针代替迭代器的指针&…

STM32 第3章 如何用串口下载程序

时间:2024.10.28 一、学习内容 1、安装USB转串口驱动 1.1串口下载连接示意图 1、USB转串口模块在开发板上是一个独立的模块,可通过调帽与其他串口连接,USART1/2/3/4/5 2、只有USART1才具有串口下载的功能。 3、CH340是电平转换芯片,将电脑端输出的USB电平和单片机输…

探索PDFMiner:Python中的PDF解析利器

文章目录 探索PDFMiner&#xff1a;Python中的PDF解析利器1. 背景介绍&#xff1a;为何选择PDFMiner&#xff1f;2. PDFMiner是什么&#xff1f;3. 如何安装PDFMiner&#xff1f;4. 简单库函数使用方法4.1 提取文本4.2 获取页面布局信息4.3 提取表格数据4.4 提取图像 5. 应用场…

Spring Boot驱动的植物健康监测革命

1系统概述 1.1 研究背景 随着计算机技术的发展以及计算机网络的逐渐普及&#xff0c;互联网成为人们查找信息的重要场所&#xff0c;二十一世纪是信息的时代&#xff0c;所以信息的管理显得特别重要。因此&#xff0c;使用计算机来管理植物健康系统的相关信息成为必然。开发合适…

植物病害图像分割系统:分割算法优化

植物病害图像分割系统源码&#xff06;数据集分享 [yolov8-seg-EfficientHead&#xff06;yolov8-seg-EfficientRepBiPAN等50全套改进创新点发刊_一键训练教程_Web前端展示] 1.研究背景与意义 项目参考ILSVRC ImageNet Large Scale Visual Recognition Challenge 项目来源A…

vue使用高德地图实现轨迹显隐

<template><div><el-button type"primary" click"pathShowOrHide">轨迹显/隐</el-button><div id"container" /></div> </template><script> import AMapLoader from amap/amap-jsapi-loaderex…

基于Spring Boot的在线摄影工作室开发指南

1系统概述 1.1 研究背景 随着计算机技术的发展以及计算机网络的逐渐普及&#xff0c;互联网成为人们查找信息的重要场所&#xff0c;二十一世纪是信息的时代&#xff0c;所以信息的管理显得特别重要。因此&#xff0c;使用计算机来管理网上摄影工作室的相关信息成为必然。开发合…

法国第二大互联网服务商遭遇数据泄露,波及1900万用户

据BleepingComputer消息&#xff0c;法国主要互联网服务提供商 &#xff08;ISP&#xff09; Free 在上周末证实&#xff0c;稍早前有黑客入侵了其系统并窃取了用户的个人信息。 Free是法国第二大电信公司&#xff0c;也是欧洲第六大移动运营商 Iliad Group 的子公司&#xff0…

python道格拉斯算法的实现

废话不多说 直接开干 需要用到模块 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple math #对浮点数的数学运算函数 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple shapely #提供几何形状的操作和分析&#xff0c;如交集、并集、差集等 pip install -i …

Lucas带你手撕机器学习——岭回归

岭回归&#xff08;Ridge Regression&#xff09; 一、背景与引入 在进行线性回归分析时&#xff0c;我们常常面临多重共线性的问题。多重共线性指的是自变量之间高度相关&#xff0c;这会导致回归系数的不稳定性&#xff0c;使得模型的预测能力降低。传统的线性回归通过最小…

MacOS下载安装Logisim(图文教程)

本章教程主要介绍如何在MacOS系统中安装Logisim。 一、Logisim是什么? Logisim是一个用于电子逻辑门电路模拟的教育工具软件。它允许用户通过图形界面构建和测试复杂的数字逻辑电路,如加法器、解码器、编码器、寄存器、内存等,从而帮助学生理解计算机硬件的工作原理。 二、如…

Nature Communications|一种3D打印和激光诱导协同策略用于定制功能化器件(3D打印/激光直写/柔性电子/人机交互/柔性电路)

美国密苏里大学机械与航天工程系Jian Lin团队,在《Nature Communications》上发布了一篇题为“Programmed multimaterial assembly by synergized 3D printing and freeform laser induction”的论文。论文内容如下: 一、 摘要 在自然界中,结构和功能材料经常形成程序化的三…

UE5 第一人称示例代码阅读0 UEnhancedInputComponent

UEnhancedInputComponent使用流程 我的总结示例分析firstthenand thenfinally&代码关于键盘输入XYZ 我的总结 这个东西是一个对输入进行控制的系统&#xff0c;看了一下第一人称例子里&#xff0c;算是看明白了&#xff0c;但是感觉这东西使用起来有点绕&#xff0c;特此梳…

修复卡密商品每次保存的时候库存都会减少的问题

5.0版本中&#xff0c;卡密商品每次保存的时候&#xff0c;库存都会减少的问题 修改文件crmeb/app/services/product/sku/StoreProductAttrServices.php 删除或者注释箭头所指的哪一行代码 增加红框内的代码&#xff0c;重新保存商品库存正常 必须复制下方代码&#xff0c;才…

Bug | 项目中数据库查询问题

问题描述 理论上&#xff0c;点击查询后&#xff0c;表头应当显示中文。而不是上面的在数据库中的表头【如上图示】 正常点击查询后&#xff0c;如果没有输入值&#xff0c;应当是查询所有的信息。 原因分析&#xff1a; 这里是直接使用SELECT * 导致的。例如&#xff1a; S…