关于zxing库,用的是两天前发布的3.5.1版本。

在Android配置文件build.gradle(app)中直接implementation的zxing.core。

implementation 'com.google.zxing:core:3.5.1'

在网上找到个代码,可以创建PDF417码制的二维码。

public static Bitmap createPdf417(String text, int size) {try {Hashtable<EncodeHintType, Object> hints = new Hashtable<EncodeHintType, Object>();hints.put(EncodeHintType.CHARACTER_SET, "utf-8");// hints.put(EncodeHintType.ERROR_CORRECTION,"2");hints.put(EncodeHintType.MARGIN, 1);BitMatrix bitMatrix = new PDF417Writer().encode(text,BarcodeFormat.PDF_417, size, size, hints);// int[] pixels = new int[size * size];int bitWidth = bitMatrix.getWidth();int bitHeight = bitMatrix.getHeight();int[] pixels = new int[bitWidth * bitHeight];//遍历bitmatrix,为像素矩阵按一行行(横列)设置像素颜色。for (int y = 0; y < bitHeight; y++) {//遍历一行一行像素for (int x = 0; x < bitWidth; x++) {if (bitMatrix.get(x, y)) {pixels[y * bitWidth + x] = 0xff000000;} else {pixels[y * bitWidth + x] = 0xffffffff;}}}Bitmap bitmap = Bitmap.createBitmap(bitWidth, bitHeight,Bitmap.Config.ARGB_8888);bitmap.setPixels(pixels, 0, bitWidth, 0, 0, bitWidth, bitHeight);return bitmap;} catch (WriterException e) {e.printStackTrace();return null;}//return null;
}

使用:自己的类.createPdf417(String text, int size)
text为二维码的内容,size为大小。

直接copy,然后显示的码也挺漂亮。但是一扫就不对劲了前面总是有个A

用了pdf417的办法,压缩,紧凑,不失真–都不行。

然后就翻墙上github上看了一下

发现是个老bug老bug,具体的原因就是在增加hints的时候加上了UTF-8的标准。但是zxing库这个默认的标准是iso_8859_1。
而且追了下发现是先是iso然后又转成了UTF-8,所以出现了BUG。但是如果不加utf-8的话,就直接是iso标准,就不会有前面是A的方法了。
不过如果要求是utf-8那还是蛮麻烦的。

更改后的代码,其实就是关了hints的utf-8

public static Bitmap createPdf417(String text, int size) {try {Hashtable<EncodeHintType, Object> hints = new Hashtable<EncodeHintType, Object>();// hints.put(EncodeHintType.ERROR_CORRECTION,"2");hints.put(EncodeHintType.MARGIN, 1);BitMatrix bitMatrix = new PDF417Writer().encode(text,BarcodeFormat.PDF_417, size, size, hints);// int[] pixels = new int[size * size];int bitWidth = bitMatrix.getWidth();int bitHeight = bitMatrix.getHeight();int[] pixels = new int[bitWidth * bitHeight];//遍历bitmatrix,为像素矩阵按一行行(横列)设置像素颜色。for (int y = 0; y < bitHeight; y++) {//遍历一行一行像素for (int x = 0; x < bitWidth; x++) {if (bitMatrix.get(x, y)) {pixels[y * bitWidth + x] = 0xff000000;} else {pixels[y * bitWidth + x] = 0xffffffff;}}}Bitmap bitmap = Bitmap.createBitmap(bitWidth, bitHeight,Bitmap.Config.ARGB_8888);bitmap.setPixels(pixels, 0, bitWidth, 0, 0, bitWidth, bitHeight);return bitmap;} catch (WriterException e) {e.printStackTrace();return null;}//return null;
}

追了好久的源码,也没有找到到底那里转换错了。时间紧迫,就先这样改了。

Android使用Zxing库生成PDF417扫描后多一个字符A相关推荐

  1. 使用zxing包生成和扫描二维码和一维码

    在开发之前要先下载zxing包对其简化,新建一个android工程,把zxing包中的android和android-code中的文件复制到相应的文件夹里面 其中的libs文件夹里需要zxing包中的 ...

  2. Android开发--Zxing库实现二维码/条形码扫描识别

    首先要下载所需要的源码,可以从zxing官网下载,下载压缩包然后解压到自己要放的地址 然后导入zxing包,下载的zxing源码中我们能用到的大概就camera,decoding,view三个包,可直 ...

  3. Android 基于Zxing二维码扫描的光速实现

    Android 十分钟光速实现二维码扫描 前言 在项目中要使用到二维码的相关内容,我们第一时间想到的是使用大名鼎鼎的zxing或者ZBar开源框架: github-zxing官方库的地址 github ...

  4. Android 集成zxing二维码扫描、自定义

    项目主要有zxing的基本使用,包含扫描回调.连续扫描.自定义扫描框: 一.依赖库 implementation 'com.journeyapps:zxing-android-embedded:4.3 ...

  5. android接入高德API,生成正式包后,导航页面闪退

    添加如下混淆,可防止,出现问题,记录一下,希望对别人有帮助. #3D 地图 V5.0.0之前: -keep class com.amap.api.maps.{;} -keep class com.au ...

  6. 输入一个字符后后面一个字符就会自动删除

    台式电脑:键盘上的insert按键退出 笔记本:Fn+insert按键退出

  7. Regex—匹配特定字符后的一个字符

    一 需求 匹配user_id = ?后面的数字 二 实现 *对应代码如下: <?php $tableShardKey = 'user_id'; $str = "user_id = ?2 ...

  8. 【Android App】人脸识别中扫描识别二维码实战解析(附源码和演示 超详细)

    需要源码请点赞关注收藏后评论区留言私信~~~ 一.扫描识别二维码 不仅可以利用zxing库生成二维码,同样利用zxing库可以扫描二维码并解析得到原始文本,此时除了给build.gradle添加如下一 ...

  9. python利用dominate库生成静态网页

    HTML报告:python利用dominate库生成静态网页 dominate 简介 一个生成页面的简单例子 标记的属性 如何生成复杂的文档结构 访问内容和属性 渲染 上下文管理器 装饰器 创建文档 ...

  10. 2022-02-18 Android app 二维码扫描demo,用zxing库,实测ok,记录一下所参考有价值的文章,有生成二维码的demo,但没有亲测。

    一.Android中二维码扫描的最常用库是zxing和zbar,这里用zxing. 二.实测效果图,扫描完成后会以Toast方式显示结果. 三.测试代码的架构 四.代码不细说,想看源码的可以downl ...

最新文章

  1. HDFS组件性能调优:数据平衡
  2. 线结构光平面标定矩阵变换算子
  3. 16、mybatis动态sql 批量插入
  4. 【Linux】一步一步学Linux——more命令(39)
  5. 让你脱胎成技术大神的JAVA开发技巧
  6. 徐州初中计算机学校排名2015,徐州初中学校排名,徐州重点初中排名详细榜单
  7. ASP.NET MVC+LINQ开发一个图书销售站点(6):创建数据层
  8. 进销存erp系统价格
  9. 捷速编辑pdf文件插入图片的方法
  10. 云盘同步本地文件和QQ聊天记录
  11. 很多次游戏的最后取胜实际上都有很强的偶然性
  12. 麻雀虽小,五脏俱全 - Java工具类库 - Hutool
  13. matplotlib - spines 设置
  14. GC日志分析神器-GCEasy详解
  15. 计算机体系结构——内存
  16. 用Hyperledger cello的0.9.0-h3c分支创建一套区块链系统
  17. 鼠标悬停之hover选择器
  18. 运放电路的知识点(一)
  19. sr算法matlab,超分辨率 SRCNN
  20. 【python初级】os.path.isfile(path)判断路径是否为文件

热门文章

  1. android使用Itext库生成PDF文件
  2. 怎么彻底卸载mysql8.0_彻底卸载MySQL8.0
  3. vue+高德地图 点击地图获取经纬度和详细地址
  4. css摇杆,【宅家呗专题】Virtual Joystick虚拟摇杆插件教程
  5. Android实训——图书管理系统
  6. 手把手教你设计数字钟(基于protues8.6)
  7. multisim 10 小知识
  8. 计算机数学基础试卷及答案,2012计算机数学基础试题及答案.pdf
  9. FinalData的快速扫描
  10. 设计模式:UML类图、策略模式、单例模式、工厂模式、观察者模式