ZXing竖屏解决(完美版)
来源:互联网 发布:mac双色修容粉 编辑:程序博客网 时间:2024/04/27 23:12
好久没写博客了,正在做扫码的项目,我们调用ZXing的项目,毕竟有源码,比较好的深入哈。我用的是ZXing2.1的包,其实这个包也有问题,就是编码问题,请看ZXing乱码问题的解决!传送门(这个经测试还是有乱码问题,以后我会写一篇作为参考)
在之前一定要仔细看源码哦,这个项目有很多学习的地方呢。
好了,不多说了,正文,怎么解决竖屏问题,相信网上也能搜得到,可是那好多都是基于ZXing1.6版本的。
1、修改manifest文件,将CaptureActivity设为portrait
android:screenOrientation="portrait"
2、在DecodeHandler.java文件中,找到decode(byte[],int,int)方法,在buildLuminanceSource调用前,加上如下:
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; // Here we are swapping, that's the difference to #11 width = height; height = tmp; data = rotatedData;
3、在CameraManager.java中找到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;4、在CameraConfigurationManager.java里找到setDesiredCameraParameters()方法,加入代码
camera.setDisplayOrientation(90);
到这里在ZXing1.6上已经可以完美的实现了,但是你用的是ZXing2.1的源码代码的话(我说的是ZXing2.1的例子项目),你会发现取景框会在屏幕的右上角,所以我们得把其拿到中间来。且看
5、在CameraConfigurationManager.java里找到initFromCameraParameters(Camera camera)方法,去掉如下代码
if (width < height) {Log.i(TAG, "Display reports portrait orientation; assuming this is incorrect");int temp = width;width = height;height = temp;}
到此就可以了,这样的话,可能你显示出来的大小不是你满意的,你可以修改CameraManager类中的如下代码:
private static final int MIN_FRAME_WIDTH = 240; private static final int MIN_FRAME_HEIGHT = 240; private static final int MAX_FRAME_WIDTH = 400; private static final int MAX_FRAME_HEIGHT = 600;你还可以根据像素进行数组选择最合适的宽高值,
对了,在打Log中遇到了了一个问题,在此提醒下大家
Unexpected error initializing cameraLog tag "CameraConfigurationManager" exceeds limit of 23 characters
LOG竟然还有23个字符的限制、报RuntimeException
- ZXing竖屏解决(完美版)
- Android ZXing竖屏解决
- 条码二维码扫描ZXing简化版源码(竖屏完美版)
- zxing.net 中文乱码,重新设置字符集完美解决
- Google ZXing系列讲解(四)——ZXing 解决竖屏扫描问题
- android Zxing二维码扫描 竖屏切换问题的解决
- Android下ZXing竖屏问题的解决。
- zxing 竖屏扫描
- Android程序中完美解决Zxing二维码扫描图片变形问题
- ZXing改横屏识别为竖屏识别-中间极光线,并解决图像拉伸问题
- 解决zxing变为竖屏扫描后摄像头捕捉图像拉伸
- zxing 二维码扫描 解决竖屏状态下 被拉伸的问题
- 解决Android二维码扫描ZXing竖屏拉伸变长闪退扫描区域小等问题
- 解决Android二维码扫描ZXing竖屏拉伸变长闪退问题
- android zxing 定制竖屏
- Zxing 竖屏切换 android
- Zxing 竖屏切换 android
- Zxing 竖屏切换 Android
- jQuery全面解剖系列(一)Deferred风格的Ajax
- 将java的集合转换为数据库集合类型 解决weblogic调用存储过程的时候,返回值乱码问题
- 用JavaScript阐述MapReduce原理
- Android共享全局数据
- classpath*文件路径
- ZXing竖屏解决(完美版)
- const与指针
- 条件标签
- hdu4419 线段树扫描线
- 哈希算法
- 使用 Visual Studio 2010 Ultimate 及 Agent 進行負載壓力測試
- c# 窗体应用程序中解析json格式
- C++ 中函数后面跟const是什么意思
- 浅谈HTTP中Get与Post的区别 .