关于安卓ZXing条码识别(二)适配竖屏

news/2024/5/29 20:53:21/文章来源:https://blog.csdn.net/motosheep/article/details/136607394

背景

不知道如何引入源码的,请看我第一篇文章,安卓源码引入

第一篇文章,粗略讲解了如何引入zxing到安卓的源码中,但是默认是横屏识别。
本文内容,就是如何进行竖屏识别。

环境

win10
as4+
jdk8+

感谢

博客

实现

先上效果图:
在这里插入图片描述
这里看到,识别出来的效果图,是和当前预览的图像,是一致的。

整体思路,通过外部传入标识,控制当前activity的横竖屏方向

(1)先调整activity的方向,

从源码中,可以看到,caputreActivity中的onResume方法,屏幕方向,是由传感器以及配置决定的,代码如下图:
在这里插入图片描述
我们要改的,就是这里。把该方法,直接移动到Activity的onCreate方法中,并且通过传入的标识进行控制,修改后的代码如下:
在这里插入图片描述
通过上述的改动,使得我们的页面,进行了竖屏的显示。

(2)CameraManager中getFramingRectInPreview方法

在这里插入图片描述
把上述红色框的内容,修改为:

rect.left = rect.left * cameraResolution.y / screenResolution.x;
rect.right = rect.right * cameraResolution.y / screenResolution.x;
rect.top = rect.top * cameraResolution.x / screenResolution.y;
rect.bottom = rect.bottom * cameraResolution.x / screenResolution.y;

这里修改的用意,是通过比例换算出,要处理区域的参数,因为竖屏和横屏处理公式不一致,所以要特别处理。

(3)相机方向修改

CameraConfigurationManager的setDesiredCameraParameters方法的camera.setParameters(parameters)之前添加:
camera.setDisplayOrientation(90);

该修改为了适配相机的预览方向

(4)DecodeHandler中的decode方法,具体代码如下:

在这里插入图片描述
可以看到,这里对数据进行了一个选中,然后进行了数据处理,改变了数据源。

完成上述步骤后,运行,观察预览的效果,你就会看到文章开始时的效果了

that’s all------------------------------------------------

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

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

相关文章

离散化算法,以Acwing802.区间和为例子(C++实现)

目录 1.例题2.算法实现思路3.代码 1.例题 假定有一个无限长的数轴,数轴上每个坐标上的数都是 0现在,我们首先进行 n 次操作,每次操作将某一位置 x 上的数加 c接下来,进行 m 次询问,每个询问包含两个整数 l 和 r&#…

数学建模【对粒子群算法中惯性权重和学习因子的改进】

一、改进原因 这是前面 数学建模【粒子群算法】 中的一部分,这里提到了w存在的一些问题,那么本篇介绍一些方法对w和因子进行一些改进,提高粒子群算法的效率和准确度。 二、改进方法 1.线性递减惯性权重 惯性权重w体现的是粒子继承先前的速度…

Linux:kubernetes(k8s)pod的基础操作(6)

Linux:kubernetes(k8s)允许在任意节点使用kubectl命令(5)-CSDN博客https://blog.csdn.net/w14768855/article/details/136460090?spm1001.2014.3001.5501 我在前两张进行了基础环境的一系列搭建,现在就正…

LeetCode 189.轮转数组(三种方法解决)

文章目录 题目暴力求解空间换时间三段逆置总结 题目 LeetCode 189.轮转数组 给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。 输入: nums [1,2,3,4,5,6,7], k 3 输出: [5,6,7,1,2,3,4] 解释: 向右轮转 1 步: [7,1,2,3,4,5…

蓝桥杯真题讲解:三国游戏(贪心)

蓝桥杯真题讲解&#xff1a;三国游戏&#xff08;贪心&#xff09; 一、视频讲解二、正解代码 一、视频讲解 蓝桥杯真题讲解&#xff1a;三国游戏&#xff08;贪心&#xff09; 二、正解代码 //三国游戏&#xff1a;贪心 #include<bits/stdc.h> #define int long lon…

Mysql 死锁案例2-间隙锁与意向插入锁冲突

死锁复现 CREATE TABLE t (id int(11) NOT NULL,c int(11) DEFAULT NULL,d int(11) DEFAULT NULL,PRIMARY KEY (id),KEY c (c) ) ENGINEInnoDB DEFAULT CHARSETutf8;/*Data for the table t */insert into t(id,c,d) values (0,0,0),(5,5,5),(10,10,10) 事务1事务2T1START …

HarmonyOS NEXT应用开发之Tab组件实现增删Tab标签

介绍 本示例介绍使用了Tab组件实现自定义增删Tab页签的功能。该场景多用于浏览器等场景。 效果图预览 使用说明&#xff1a; 点击新增按钮&#xff0c;新增Tab页面。点击删除按钮&#xff0c;删除Tab页面。 实现思路 设置Tab组件的barHeight为0&#xff0c;隐藏组件自带的…

Linux:导出环境变量命令export

相关阅读 Linuxhttps://blog.csdn.net/weixin_45791458/category_12234591.html?spm1001.2014.3001.5482 Linux中的内建命令export命令用于创建一个环境变量&#xff0c;或将一个普通变量导出为环境变量&#xff0c;并且在这个过程中&#xff0c;可以给该环境变量赋值。 下面…

深度学习进阶:揭秘强化学习原理,实战应用全解析!

作为机器学习领域的一大分支&#xff0c;强化学习以其独特的学习方式吸引了众多研究者和实践者的目光。强化学习&#xff0c;顾名思义&#xff0c;是通过不断地强化与环境的交互来优化决策策略。在这个过程中&#xff0c;智能体通过试错&#xff0c;根据环境给出的奖励信号来调…

IP数据报格式

每一行都由32位比特&#xff0c;即4个字节组成&#xff0c;每个格子称为字段或者域。IP数据报由20字节的固定部分和最大40字节的可变部分组成。 总长度 总长度为16个比特&#xff0c;该字段的取值以字节为单位&#xff0c;用来表示IPv4数据报的长度(首部长度数据载荷长度)最大…

应用工程中获取Shapefile文件的图形信息并显示

本文用纯前端获取shp文件以及前后端交互的方式获取Shapefile文件中的图形信息 1.案例说明 在日常的WebGIS开发中&#xff0c;我们往往会面对&#xff0c;需要用户选择矢量数据&#xff0c;通过矢量数据中的空间范围信息&#xff0c;显示在界面上&#xff0c;并给用户的下一步…

MySQL8.0 通过data文件恢复数据库

情景&#xff1a; mysql突然访问不了&#xff0c;也启动不了&#xff0c;需要保存之前的数据库文件&#xff0c;在卸载重装恢复数据 步骤&#xff1a; 1、Mysql里的数据一般会自动保存到C:\ProgramData\MySQL\MySQL Server 8.0\Data目录下&#xff0c;卸载前要将其备份。这是…

大模型字典中加入特殊字符

大模型字典中加入特殊字符 在微调大模型的时候会遇到添加特殊字符&#xff0c;例如在微调多轮的数据的时候需要加入人和机器等特殊标识字符&#xff0c;如用这个特殊字符表示人&#xff0c;用这个特殊字符表示机器&#xff0c;从而实现了人机对话。一般在大模型中base字典中不…

大数据组件之Flink:实时流处理的王者

导言 在大数据的世界里&#xff0c;实时流处理已成为许多业务场景中的核心需求。而Apache Flink&#xff0c;作为一款开源的流处理框架&#xff0c;凭借其高效、可靠和灵活的特性&#xff0c;已经在实时计算领域一枝独秀了。 简介 Apache Flink是一个用于无界和有界数据流的开…

Python之Web开发中级教程----搭建Git环境三

Python之Web开发中级教程----搭建Git环境三 多人分布式使用仓库操作实例 场景&#xff1a;开发者A&#xff0c;开发者B在同一个项目协同开发&#xff0c;修改同一个代码文件。开发者A在Win10下&#xff0c;开发者B在Ubuntu下。 1、开发者A修改提交代码 从GitHub: Let’s bu…

Linux系统目录结构详细介绍

目录 一、根目录&#xff08;/&#xff09; 二、/bin 三、/boot 四、/dev 1.设备文件类型&#xff1a; 2.常见设备文件&#xff1a; 五、/etc 六、/home 七、/root 八、/run 九、/sbin 十、 /tmp 十一、/usr 十二、/var Linux系统目录结构是一种层次化的文件系…

Git版本工具学习

目录 版本控制git配置工作区域文件状态git对象模型基础命令.gitignore忽略文件IDEA集成Git 版本控制 本地版本控制&#xff1a;在本地记录每一次版本更新。 集中版本控制&#xff1a;版本数据都保存在单一服务器&#xff0c;不联网就看不到版本信息。SVN 分布式版本控制&…

计算机设计大赛 目标检测-行人车辆检测流量计数

文章目录 前言1\. 目标检测概况1.1 什么是目标检测&#xff1f;1.2 发展阶段 2\. 行人检测2.1 行人检测简介2.2 行人检测技术难点2.3 行人检测实现效果2.4 关键代码-训练过程 最后 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 行人车辆目标检测计数系统 …

【QT】文件操作(QFile)和 文件的属性(QFileInfo)

QT中对文件的操作—很重要 比如对文件的查找和替换 读文件 Truncate:截断。 QFile file(fileName); 默认打开的是utf8文件。 bool isOk file.open(QFile::ReadOnly); 打开其他类型的乱码怎么办&#xff1f; 使用下面的方式&#xff0c;强制从utf8转gbk #include <Q…

力扣中档题:旋转链表

思路&#xff1a;将链表数据放到数组中&#xff0c;将数组旋转&#xff0c;然后再赋值给链表 struct ListNode* rotateRight(struct ListNode* head, int k) {if(headNULL){return NULL;}int count0;struct ListNode*goodhead;while(good){count;goodgood->next;}int round…