Android开源二维码识别项目zxing横屏改为竖屏识别解决方案
来源:互联网 发布:mac漫画阅读器 编辑:程序博客网 时间:2024/06/05 12:04
转载:http://www.cnblogs.com/moka/archive/2013/05/24/3096937.html
首先你需要有zxing项目的简化版代码,在这里。
使用简化版可以免去许多不必要的代码,方便学习研究,更好定位核心功能。
如果你调试成功后,就可以着手修改将其变为竖屏识别了。
第1步:
在AndroidManifest中将CaptureActivity的screenOrientation属性做如下修改:
android:screenOrientation="portrait"
第2步:
我们要把摄像头预览景调为竖向
CameraConfigurationManager类中的setDesiredCameraParameters()方法中添加如下代码:
// 使摄像头旋转90度 setDisplayOrientation(camera, 90);
然后在CameraConfigurationManager类的最后添加setDisplayOrientation()方法:
最后在CameraConfigurationManager中的initFromCameraParameters()方法的Log.d(TAG, "Screen resolution: " + screenResolution);句后面添加如下代码,这段代码是为了解决摄像头竖过来后图像拉伸的问题:
第3步:
CameranManager类中getFramingRectInPreview()方法将:
// 下面为横屏模式 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;
替换为:
// 下面为竖屏模式 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;
第4步:
PlanarYUVLuminanceSource类中的getRow()方法为识别条形码部分,
getMatrix()方法为识别二维码部分
renderCroppedGreyscaleBitmap()方法为生成获取的码图部分
将getRow()中的:
int offset = (y + top) * dataWidth + left;
getMatrix()中的:
int inputOffset = top * dataWidth + left;
inputOffset += dataWidth;
renderCroppedGreyscaleBitmap()中的:
int inputOffset = top * dataWidth + left;
inputOffset += dataWidth;
这些语句中dataWidth全部替换为dataHeight
同时将PlanarYUVLuminanceSource构造方法中:
if (left + width > dataWidth || top + height > dataHeight) { throw new IllegalArgumentException("Crop rectangle does not fit within image data."); }
dataWidth与dateHeight中互换位置即可。
此时,你的程序竖屏识别码图应该没有任何问题了。至于取景框的样式,大家可以在自定义的ViewfinderView中修改成自己喜欢的样式。
- Android开源二维码识别项目zxing横屏改为竖屏识别解决方案
- Android开源二维码识别项目zxing横屏改为竖屏识别解决方案
- Android开源二维码识别项目zxing横屏改为竖屏识别解决方案
- Android开源二维码识别项目zxing横屏改为竖屏识别解决方案
- Android二维码识别 开源项目ZXing的编译
- Android二维码识别 开源项目ZXing的编译
- 利用开源ZXing项目实现条形码和二维码扫描识别 —— Android端
- zxing横屏改为竖屏识别,多次扫描,以及存在的摄像拉伸的问题
- zxing横屏改为竖屏识别,多次扫描,以及存在的摄像拉伸的问题
- Android ZXing改横屏识别为竖屏识别[转]
- python调用zxing项目进行二维码识别
- ZXing改横屏识别为竖屏识别
- ZXing改横屏识别为竖屏识别
- ZXing改横屏识别为竖屏识别
- ZXing改横屏识别为竖屏识别
- ZXing改横屏识别为竖屏识别
- ZXing改横屏识别为竖屏识别
- zxing二维码识别
- 连接虚拟机时候网段改成统一也连接不上的原因
- 华为机试—频率最小的字符
- SpringAOP拦截Controller,Service实现日志管理(自定义注解的方式)
- 2015 年初,新年新气象
- Limboy:自学 iOS 开发的一些经验
- Android开源二维码识别项目zxing横屏改为竖屏识别解决方案
- 动态规划-组合
- jquerymobile带过滤器的列表事例
- 异步交互(一)
- java.lang.OutOfMemoryError: Java heap space解决方法
- Linux套接字实现简单的客户/服务器网络通信示例
- 爱立信SDN/NFV解决方案:打造面向未来的网络
- JAVA 非对称加密算法RSA
- Is not recognized as an internal or external command