`
肖福燕
  • 浏览: 12165 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

二维码扫描--横屏识别转为竖屏识别

阅读更多
最近在参加一次比赛,需要实现一个二维码扫描的功能,于是找到了google的开源框架Zxing,我们可以去http://code.google.com/p/zxing/下载源码和Jar包。下载下来运行时发现二维码在识别时是横屏的,用户体验很不爽,于是在网上求教大佬们支招。具体解决方法如下:
1、在AndroidManifest.xml中,修改CaptureActivity的属性:将android:screenOrientation="landscape"改为portrait
2、找到DecodeHandler.java,修改其中的decode方法:
   将PlanarYUVLuminanceSource source = CameraManager.get().buildLuminanceSource(data, width, height);注释掉,并添加下面代码段:
   byte[] newData = new byte[data.length];
        for (int y = 0; y < height; y++) {
            for (int x = 0; x < width; x++)
                newData[x * height + height - y - 1] = data[x + y * width];
        }
        int tmp = width;
        width = height;
        height = tmp;

        PlanarYUVLuminanceSource source = CameraManager.get().buildLuminanceSource(newData, width, height);
3、找到CameraManager.java,修改其中的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、找到CameraConfigurationManager.java,修改其中的initFromCameraParameters方法:
   在最后添加代码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;
        }
        cameraResolution = getCameraResolution(parameters, screenResolutionForCamera);
5、同样是上面的类,修改其中的方法setDesiredCameraParameters方法:
   在最后添加代码
   // 使摄像头旋转90度
   setDisplayOrientation(camera, 90);
   并写一个方法代码如下:
   /*改变照相机成像的方向的方法*/
    protected void setDisplayOrientation(Camera camera, int angle) {
        Method downPolymorphic = null;
        try {
            downPolymorphic = camera.getClass().getMethod("setDisplayOrientation", new Class[] { int.class });
            if (downPolymorphic != null)
                downPolymorphic.invoke(camera, new Object[]{angle});
        } catch (NoSuchMethodException e) {
            e.printStackTrace();
        } catch (IllegalArgumentException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (InvocationTargetException e) {
            e.printStackTrace();
        }
    }
至此修改已经结束,亲测有效。


参考文章:http://blog.csdn.net/chenbin520/article/details/16362459
http://407827531.iteye.com/blog/1488676
分享到:
评论

相关推荐

    android二维码扫描竖屏,横屏(竖屏简化代码,横屏google源码)

    本篇将详细解析标题和描述中提到的"android二维码扫描竖屏,横屏"的相关知识点,包括竖屏简化版和横屏Google源码的应用。 1. **二维码扫描原理** 二维码扫描主要依赖于二维码解码库,例如ZXing(Zebra Crossing)库...

    安卓条码扫描二维码相关-android实现竖屏二维码扫描.zip

    【安卓条码扫描二维码相关-android实现竖屏二维码扫描】 在Android平台上,开发一款能够扫描二维码的应用是一项常见的任务。本项目“安卓条码扫描二维码相关-android实现竖屏二维码扫描.zip”提供了一个基本的实现...

    二维码扫描,横屏竖屏都支持

    在本文中,我们将深入探讨二维码扫描的工作原理、横屏与竖屏支持的实现方式,以及如何在应用程序中集成这一功能。 一、二维码工作原理 二维码,全称为“Quick Response Code”,即快速响应码,是一种二维条形码。它...

    iOS 二维码扫描 - 生成二维码图片-扫描二维码图片

    本教程将详细介绍如何在iOS应用中实现二维码的生成和扫描功能,主要涉及以下几个核心知识点: 1. **Core Image框架**:用于处理图像,包括扫描二维码。`CIDetector`类提供了检测图像中的特征,如二维码的能力。 2....

    二维码识别-使用opencv在Android上开发的微信二维码识别项目源码+演示apk+详细使用说明.zip

    二维码识别-使用opencv在Android上开发的微信二维码识别项目源码+演示apk+详细使用说明.zip二维码识别-使用opencv在Android上开发的微信二维码识别项目源码+演示apk+详细使用说明.zip二维码识别-使用opencv在Android...

    android 实现竖屏二维码扫描-IT计算机-毕业设计.zip

    阐述如何实现竖屏扫描,以及与其他横屏扫描方案的比较。 通过这个项目,学生不仅可以学习到Android应用开发的基础知识,还能深入理解图像处理、权限管理、UI设计等方面的技术。同时,对于实际项目经验的积累和毕业...

    安卓条码扫描二维码相关-Zxing二维码扫描竖屏仿QQ扫一扫.rar

    【安卓条码扫描二维码相关-Zxing二维码扫描竖屏仿QQ扫一扫】 这个压缩包文件主要包含了一个基于Zxing库实现的二维码扫描项目,旨在模仿QQ应用的“扫一扫”功能,适用于竖屏模式。Zxing(ZXing,发音为 "zebra ...

    Android应用源码之android 实现竖屏二维码扫描-IT计算机-毕业设计.zip

    在Android平台上实现一个竖屏二维码扫描的应用涉及到多个技术层面,包括UI设计、摄像头处理、图像识别和处理等。以下是对这个主题的详细说明: 一、Android应用基础 Android是Google主导的开源移动操作系统,用于...

    安卓条码扫描二维码相关-android二维码识别基本代码.zip

    【安卓条码扫描二维码相关-android二维码识别基本代码】 在安卓应用程序开发中,条码和二维码的扫描与识别是一项常见的功能,广泛应用于商品信息查询、支付链接跳转等场景。本资源提供了一些基本的代码实现,帮助...

    安卓条码扫描二维码相关-条形码二维码扫描.rar

    在安卓平台上,条形码和二维码扫描是一种常见的功能,广泛应用于商品识别、信息获取、支付等领域。本资源“安卓条码扫描二维码相关-条形码二维码扫描.rar”包含的文件可能是一个开发示例或者库,用于帮助开发者实现...

    安卓条码扫描二维码相关-二维码扫描并加载到webview.zip

    【安卓条码扫描二维码相关-二维码扫描并加载到webview】 在移动开发中,二维码扫描是一种常见的功能,它能够快速地传递信息,如网址、文本、联系人信息等。安卓平台提供了多种方式来实现二维码扫描,并将其内容加载...

    二维码扫描,横屏竖屏都支持.

    在移动应用开发中,支持横屏和竖屏模式的二维码扫描功能是用户体验的重要组成部分。 首先,我们来讨论二维码的基本原理。二维码,全称二维条形码,是一种用黑白相间的图形表示信息的编码方式。它比传统的条形码能...

    android 实现竖屏二维码扫描.zip

    在Android平台上实现竖屏二维码扫描是一项常见的任务,尤其在开发移动应用时,用户可能需要快速扫描二维码以获取信息或执行特定操作。这个压缩包提供的源码是一个完整的Android应用项目,旨在帮助开发者理解和实现这...

    安卓条码扫描二维码相关-android二维码扫描很好用的资源.rar

    - **ViewfinderView**: 显示相机预览,并在扫描区域上绘制识别框,以引导用户正确对准条码或二维码。 - **DecodeThread**: 异步处理图像解码,避免阻塞UI主线程。 - **ResultHandler**: 处理解码结果,可以将扫描...

    Delphi二维码扫描.zip

    "Delphi二维码扫描.zip"这个文件很可能包含了一个使用Delphi开发的二维码扫描应用程序或者相关的源代码示例。下面我们将深入探讨与Delphi和二维码扫描相关的知识点。 1. **Delphi技术**: - **集成开发环境**:...

    安卓条码扫描二维码相关-二维码扫描案例.rar

    同时,也要处理扫描失败的情况,例如光线不足或者二维码无法识别。 7. **自定义扫描框**:为了提高用户体验,可以定制扫描框的样式,例如添加动画效果,使用户更容易定位到二维码。 8. **性能优化**:考虑到实时...

    安卓条码扫描二维码相关-二维码扫描的实现.rar

    本资源“安卓条码扫描二维码相关-二维码扫描的实现.rar”包含了一个关于二维码扫描实现的项目,可能包括源代码、库文件和其他相关资料。由于文件数量众多,无法逐一验证其可用性,所以开发者需要自行调试以确保程序...

    android 二维码扫描 支持横竖屏切换Demo

    本Demo主要展示了如何利用zxing库实现一个支持横竖屏切换的二维码扫描功能。ZXing,全称Zebra Crossing,是一个开源的条码处理库,支持多种格式的条码和二维码扫描。 首先,我们需要在项目中集成zxing库。这里使用...

    安卓条码扫描二维码相关-仿微信二维码制作二维码扫码读取名片信息.rar

    在安卓平台上,条码扫描和二维码的使用非常广泛,其中包括了微信二维码的制作与读取。这个压缩包文件“安卓条码扫描二维码相关-仿微信二维码制作二维码扫码读取名片信息.rar”似乎提供了一个实现类似微信功能的示例...

    安卓条码扫描二维码相关-支持竖屏平板和只有前置摄像头的android二维码扫描demo修复后.zip

    支持竖屏、平板和只有前置摄像头的android二维码扫描demo(修复后).zip,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。

Global site tag (gtag.js) - Google Analytics