文档章节

二维码扫描(横屏、竖屏、解决竖屏后拉伸问题、美化扫描框)

Jonson
 Jonson
发布于 2014/03/03 13:36
字数 342
阅读 1289
收藏 6
  • 二维码扫描(横屏、竖屏、解决竖屏后拉伸问题、美化扫描框)

  • 是根据zxing的源码进行简化的,不过只支持横屏。

    其实支持竖屏也挺简单的:【http://stackoverflow.com/questions/16252791/zxing-camera-in-portrait-mode-on-android】

    Step 1: Add following lines to rotate data before buildLuminanceSource(..) in decode(byte[] data, int width, int height)

     

    DecodeHandler.java:

     

    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;

     

    PlanarYUVLuminanceSource source = activity.getCameraManager().buildLuminanceSource(rotatedData, width, height);

    Step 2: Modify getFramingRectInPreview().

     

    CameraManager.java

     

    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;

    Step 3: Disable the check for Landscape Mode in initFromCameraParameters(...)

     

    CameraConfigurationManager.java

     

    //remove the following

    if (width < height) {

      Log.i(TAG, "Display reports portrait orientation; assuming this is incorrect");

      int temp = width;

      width = height;

      height = temp;

    }

    Step 4: Add following line to rotate camera insetDesiredCameraParameters(...)

     

    CameraConfigurationManager.java

     

    camera.setDisplayOrientation(90);

    Step 5: Do not forget to set orientation of activity to portrait. I.e: manifest

     

    但是这样之后,会出现拉伸的问题,解决方法如下:

    更改CameraConfigurationManager.java文件

     

    在 Log.d(TAG, "Screen resolution: " + screenResolution);这句之后增加

    Point screenResolutionForCamera = new Point();

            screenResolutionForCamera.x = screenResolution.x;

            screenResolutionForCamera.y = screenResolution.y;

            // preview size is always something like 480*320, other 320*480

            if (screenResolution.x < screenResolution.y) {

            screenResolutionForCamera.x = screenResolution.y;

            screenResolutionForCamera.y = screenResolution.x;

            }

    再更改cameraResolution = getCameraResolution(parameters, screenResolution);为cameraResolution = getCameraResolution(parameters, screenResolutionForCamera);

    如果想美化一下取景框,可以参看代码:https://code.csdn.net/snippets/64838


本文转载自:http://www.myexception.cn/mobile/1439703.html

共有 人打赏支持
Jonson
粉丝 21
博文 131
码字总数 17942
作品 0
肇庆
私信 提问
关于使用Google提供的ZXing扫描二维码Demo只能横屏的解决办法

关于屏幕的设置:横屏,竖屏,我们一般都是通过Manifest.xml中的android:screenOrientation=""属性来控制,这个属性详情可以查看:http://blog.csdn.net/nmgchfzhzhg/article/details/807713...

放纵的青春
2016/03/22
713
0
【基于zxing的编解码实战】精简Barcode Scanner篇

通过《【搞定条形码】zxing项目源码解读(2.3.0版本,Android部分)》的分析,现在可以实现最终目标了:精简Barcode Scanner并将其中的编码和解码分离为两个独立的部分,方便日后快速集成到自...

Madmatrix
2013/12/31
0
4
zxing 二维码扫描框形状问题

用谷歌的zxing二维码扫描源码做修改。 想将原来的横屏改为竖屏, 将二维码扫描框从长方形改为正方形。 可是问题出现了,为啥在不同的手机,二维码的扫描框的形状会不同,有的还是原来的长方形...

剑麟
2013/07/13
4.3K
1
二维码扫描Zxing横竖屏都支持,还可以切换激光线

花了不少时间阅读Zxing源码,相比之下,比百度,淘宝,京东的二维码扫描功能要强,适合大家把这个功能添加到你们的项目中. 需要任何修改联系我 MyZxingProject.zip 条码,二维码扫描,横屏竖屏...

76135
2012/07/15
0
10
Zxing二维码精简(竖屏、拉伸处理、扫描框大小和扫描线移动)

ZXing的开源代码,官方源码地址:http://code.google.com/p/zxing/downloads/list; 我是在ZXing2.2基础上做的,因此只下载了ZXing-2.2.zip; 此外还需要ZXing的核心Jar包,下载地址:http:...

双鱼座1990
2015/12/17
3K
4

没有更多内容

加载失败,请刷新页面

加载更多

CDH安装SENTRY

1. 背景 虽然在集群上部署了kerberos认证,但是kerberos只是对用户层面进行认证,凡是认证通过的用户都有全量的访问权限,这很不安全,需要进一步对用户的权限进行控制,Sentry 的作用就是这...

hblt-j
9分钟前
0
0
Ubuntu 18.04 PostgreSQL 11 apt 默认安装某些问题解析

首先默认安装软件(本文以PostgreSQL 11.1为例,其他版本类似)。 sudo apt install postgresql-11 等待软件自动安装并完成配置,启动服务。 服务状态如下: vmware@vmware-virtual-machine:...

白豆腐徐长卿
9分钟前
0
0
一步步动手实现高并发的Reactor模型 —— Kafka底层如何充分利用多线程优势去处理网络I/O与业务分发

一、从《Apeche Kafka源码剖析》上搬来的概念和图 Kafka网络采用的是Reactor模式,是一种基于事件驱动的模式。熟悉Java编程的读者应该了解Java NIO提供了Reactor模式的API。常见的单线程Jav...

Anur
13分钟前
0
0
数字信号处理各种处理及图象

https://wenku.baidu.com/view/b1bb67f1f90f76c661371a75.html?sxts=1544696459935

whoisliang
16分钟前
0
0
rabbitmq学习

使用docker安装rabbit docker run -d --hostname my-rabbit --name rabbit -p 8080:15672 rabbitmq:management--hostname:指定容器主机名称--name:指定容器名称-p:将mq端口号映射到本地...

元谷
31分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部