文档章节

Zxing 二维码扫描

kylinhuang
 kylinhuang
发布于 2015/06/11 16:19
字数 339
阅读 64
收藏 0

ZXing---- 开源项目 版本 2015-5-15

github----https://github.com/zxing/zxing 

core ---- ZXingCore_2015_5_15.jar

android_core ---项目中 有所修改 

删除不需要的文件

delete  

---package com.google.zxing.client.android.history; ---历史

---package com.google.zxing.client.android.wifi; 

---com.google.zxing.client.android.clipboard     ----copy

---

modify

--- CaptureActivity  ---Too much to change

--- DecodeHandler decode方法中 

PlanarYUVLuminanceSource source = activity.getCameraManager().buildLuminanceSource(data, width, height);前面

----add 更改宽高

byte[] rotatedData = new byte[data.length];

for (int y = 0; y < height; y++) {

for (int x = 0; x < width; x++)

rotatedData[x * height + height - y - 1] = data[x + y * width];

}

int tmp = width;

width = height;

height = tmp;

data = rotatedData;

---CameraManager getFramingRect方法 ---设置选择区域Rect 

framingRect = new Rect(leftOffset, topOffset, leftOffset + width, topOffset + height);更改

//---change

int width = findDesiredDimensionInRange(screenResolution.x,MIN_FRAME_WIDTH, MAX_FRAME_WIDTH);

int height = findDesiredDimensionInRange(screenResolution.y,MIN_FRAME_HEIGHT, MAX_FRAME_HEIGHT);

//---Modify

DisplayMetrics metrics = context.getResources().getDisplayMetrics();

int width = (int) (metrics.widthPixels * 0.7);

int height = (int) (width * 0.9);


int leftOffset = (screenResolution.x - width) / 2;

int topOffset = (screenResolution.y - height) / 2;


// add

topOffset = (screenResolution.y - height) / 4;

---CameraManager getFramingRectInPreview方法 --- 计算屏幕的位置

//---change

rect.left = rect.left * cameraResolution.x / screenResolution.x;

rect.right = rect.right * cameraResolution.x /screenResolution.x;

rect.top = rect.top * cameraResolution.y / screenResolution.y;

rect.bottom = rect.bottom * cameraResolution.y / screenResolution.y;

//---Modify

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;

---CameraManager openDriver方法 设置竖屏

theCamera.setPreviewDisplay(holder);之后添加

//add

theCamera.setDisplayOrientation(90);

---CameraConfigurationManager initFromCameraParameters方法

cameraResolution = CameraConfigurationUtils.findBestPreviewSizeValue(parameters, screenResolution);之前添加

//add

// ------

Point screenResolutionForCamera = new Point();

screenResolutionForCamera.x = screenResolution.x;

screenResolutionForCamera.y = screenResolution.y;

if(screenResolution.x < screenResolution.y) {

screenResolutionForCamera.x = screenResolution.y;

screenResolutionForCamera.y = screenResolution.x;

}

//----



Zxing 连续扫描

1扫描完成添加

if (surfaceHolder != null)

    initCamera(surfaceHolder);

if (handler != null)

    handler.restartPreviewAndDecode(); 

2.initCamera方法是有参数的,可参考onResume方法改为

SurfaceView surfaceView = (SurfaceView)findViewById(R.id.preview_view);;

SurfaceHolder surfaceHolder = surfaceView.getHolder();
initCamera(surfaceHolder);

3.mHandler即为当前Activity中的CaptureActivityHandler

4.restartPreviewAndDecode方法在com.zxing.decoding.CaptureActivityHandler中,要改为public


© 著作权归作者所有

共有 人打赏支持
上一篇: mac NDK 环境搭建
下一篇: 总结过去
kylinhuang
粉丝 4
博文 31
码字总数 23836
作品 0
九江
高级程序员
私信 提问
zxing 如何识别反转二维码

说起二维码扫描,估计很多人用的是 zxing 吧。 然而 zxing 虽然好用,但是却有一些坑。 这边分析一下自己实际项目遇到的一个坑。 什么坑呢? 下面举个栗子你就懂了。 这边生成二维码使用的是...

AndroidTraveler
07/23
0
0
Android微信扫描二维码登入实现 基于ZXing开源工程

项目需求,做一个类似微信扫描二维码,网页端登陆的功能实现。 利用开源项目ZXing来实现。ZXing是一个开源Java类库用于解析多种格式的1D/2D条形码。目标是能够对QR编码、Data Matrix、UPC的1...

jeffzhao
2013/02/02
0
7
利用iText和zxing生成和读pdf417二维码

前面的一些博文中已经提到了zxing这个开源工具生成和读取二维码图片,仅从学习的角度来看,可以告一个段落。在实际的生产环境中,应用zxing生成和读取二维码,却存在一些问题: 使用扫描枪读...

彭苏云
2014/03/06
0
0
基于zxing-lib三步实现Android二维码应用

只需要基于开源项目zxing-lib,便可轻松创建独立二维码App,也可将二维码功能集成进App内。本文也是zxing-lib的使用文档。同时抛砖引玉,欢迎大家一起共建zxing-lib。 项目地址:https://git...

yuminw
2014/08/23
0
8
android 二维码扫描算法优化问题

哪位大虾做过android二维码的优化问题么?最近在搞一个二维码扫描功能,zxing、zbar都试了下,感觉zbar更快吧,但是zbar是c写的,封装成so库看不到算法啊,找到文档都是ios的。。然后zxing反...

hzy00
2014/07/28
6.7K
1

没有更多内容

加载失败,请刷新页面

加载更多

Ugly Number(leetcode263)

Write a program to check whether a given number is an ugly number. Ugly numbers are positive numbers whose prime factors only include 2, 3, 5. Example 1: Input: 6Output: true......

woshixin
12分钟前
0
0
深度模型从研者 眼里的 似然估计 & Hessain 海森矩阵 & Fisher Information (费雪信息)

深度模型的训练的基本依据是最小化模型拟合数据的误差。旨在不仅知其然(如何构建和训练一个深度模型),还应知其所以然(为什么这样训练,可以做哪些优化)。我们就会发现,有很多研究者,在...

刘小米_思聪
16分钟前
0
0
阿里巴巴智能监控新场景的探索

摘要: 智能监控是智能运维的子领域,详细分析。 作者简介 王肇刚 阿里巴巴全球运行指挥中心高级技术专家 智能监控是智能运维的子领域,我们说的监控,探讨的更多是在监控策略,因为可能从数...

阿里云官方博客
18分钟前
1
0
【双十二】12 月 12 日 12 点 12 分限量抢福利,云计算不剁手!

活动详情 1.首充豪礼 双十二当日,新用户首充 200 元送 200 元代金券!仅限前 88 名!先到先得!拼手速!(新用户指 12 月 12 日前已完成注册但从未充值过的用户)
 2.超值返券 双十二当日,...

七牛云
44分钟前
3
0
Calculate Linux 发布 18 LXQt是基于Gentoo的发行版

导读 Calculate Linux 是一个基于 Gentoo 并与 Gentoo 完全兼容的滚动更新发行版家族,专为企业环境下的快速部署而优化。其提供多个不同的分支版本,分别适用于桌面、服务器等应用场景。该项...

问题终结者
46分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部