文档章节

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


© 著作权归作者所有

共有 人打赏支持
kylinhuang
粉丝 3
博文 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
ZXing读写二维码,桌面和手机的不同用法

虽然ZXing是用Java实现的Barcode开源库,但是并不代表桌面上实现的Barcode应用在手机上也可以直接使用。因为Android的Java接口有很多是不同的。这里分享下Java Barcode生成和读取的不同用法。...

yushulx
2015/08/18
0
0

没有更多内容

加载失败,请刷新页面

加载更多

74.expect脚本同步文件以及指定host同步文件 构建分发系统文件和命令

20.31 expect脚本同步文件: 在expect脚本中去实现在一台机器上把文件同步到另外一台机器上去。核心命令用的是rsync ~1.自动同步文件 #!/usr/bin/expect set passwd "123456" spawn rsync -a...

王鑫linux
15分钟前
0
0
TypeScript项目引用(project references)

转发 TypeScript项目引用(project references) TypeScript新特性之项目引用(project references) 项目引用是TypeScript 3.0中的一项新功能,允许您将TypeScript程序构建为更小的部分。 通过这...

durban
20分钟前
0
0
爬虫入门

导读 网络爬虫(Web crawler),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本,它们被广泛用于互联网搜索引擎或其他类似网站,可以自动采集所有其能够访问到的页面内容,以获取...

问题终结者
20分钟前
0
0
ppwjs之bootstrap文字排版:无序列表项不换行

<!DOCTYPT html><html><head><meta http-equiv="content-type" content="text/html; charset=utf-8" /><title>ppwjs欢迎您</title><link rel="icon" href="/favicon.ico" ......

ppwjs
27分钟前
0
0
SpringBoot 学习一

本文将从以下几个方面介绍: 前言 HelloWorld 读取配置文件 例子(CURD) 前言 Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架...

tsmyk0715
27分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部