`
butter
  • 浏览: 126393 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Android Zxing 扫描条码实现竖屏模式(portrait mode) 摄像头camera 旋转90度

 
阅读更多

最近在搞一个关于条形码扫描的软件,需求需要扫描时是竖屏。
最后在zxing官方wiki上面找到解决办法。基本思路如下。
There are 4 relative files:
1, manifest.xml, you need to make CaptureActivity portrait.

2, DecodeHandler.java, rotate data before buildLuminanceSource, it works becuase in YCbCr_420_SP and YCbCr_422_SP, the Y channel is planar and appears first

1 byte[] rotatedData = new byte[data.length];
2 for (int y = 0; y < height; y++) {
3     for (int x = 0; x < width; x++)
4         rotatedData[x * height + height - y - 1] = data[x + y * width];
5 }

3, CameraManager.java, getFramingRectInPreview() need to be modified.

1 rect.left = rect.left * cameraResolution.y / screenResolution.x;
2 rect.right = rect.right * cameraResolution.y / screenResolution.x;
3 rect.top = rect.top * cameraResolution.x / screenResolution.y;
4 rect.bottom = rect.bottom * cameraResolution.x / screenResolution.y;

4, CameraConfigurationManager.java, set camera orientation to portrait in setDesiredCameraParameters() use

1 parameters.set("orientation""portrait");

注:版本兼容请看下面。
and in getCameraResolution(), you need to swap x and y, because camera preview size is something like 480*320, other than 320*480.

1 int tmp = cameraResolution.x;
2 cameraResolution.x = cameraResolution.y;
3 cameraResolution.y = tmp;
4 return cameraResolution;

说明:
关于摄像头旋转90度的时候,不同的sdk版本方法不同。
兼容方法如下

01 if (Integer.parseInt(Build.VERSION.SDK) >= <img src="http://www.andcoder.com/wp-includes/images/smilies/icon_cool.gif" alt="8)" class="wp-smiley">
02    setDisplayOrientation(camera, 90);
03   else {
04    if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) {
05     parameters.set("orientation""portrait");
06     parameters.set("rotation"90);
07    }
08    if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {
09     parameters.set("orientation""landscape");
10     parameters.set("rotation"90);
11    }
12 }
13  
14 protected void setDisplayOrientation(Camera camera, int angle) {
15   Method downPolymorphic;
16   try {
17    downPolymorphic = camera.getClass().getMethod(
18      "setDisplayOrientation"new Class[] { int.class });
19    if (downPolymorphic != null)
20     downPolymorphic.invoke(camera, new Object[] { angle });
21   catch (Exception e1) {
22   }
23  }
<!--EndFragment-->
分享到:
评论
1 楼 yanyanquan 2012-04-18  
我尝试过你的办法了。
但扫描的时候 扫描不到条码呢。为什么呢、。
能回复我一下?
我比较急。博主尽量抽点时间回答下我把。因为程序员都比较忙。我了解,谢谢啊

相关推荐

    Android Zxing 扫描条码实现竖屏模式

    最后,`Android Zxing 扫描条码实现竖屏模式(portrait mode) 摄像头camera 旋转90度.txt`文档很可能是详细的实现步骤或代码示例。它可能包含了如何在ZXing库基础上进行修改,以适应竖屏扫描和旋转相机的详细说明。 ...

    Android zxing3.2完美横屏改竖屏

    在Android开发中,ZXing(Zebra Crossing)是一个开源项目,提供了一套全面的二维码和条形码扫描库。ZXing库广泛应用于移动设备上的扫描应用,如二维码生成、扫描和解析。本教程将深入探讨如何将ZXing 3.2版本从默认...

    XE10 Android Zxing 实现竖屏扫二维码.docx

    1. **ZXing (Zebra Crossing)**: ZXing是一个开源的、多平台的一维和二维条码图像处理库,支持多种格式的编码和解码,如QR码、条形码等。在Android平台上,ZXing常用于实现二维码扫描功能。 2. **在Delphi XE10中...

    ZXing Android二维码/条码扫描,2020Android Studio版本,横竖屏都支持

    ZXing(Zebra Crossing)是Google开发的一个开源项目,它为多种平台提供了强大的条形码和二维码处理能力。在Android平台上,ZXing被广泛应用于移动设备的二维码/条码扫描功能,使得用户能够轻松地读取和生成这些编码...

    XE7 Android Zxing免安裝 扫描和扫条码实现竖屏模式

    【标题】"XE7 Android Zxing免安裝 扫描和扫条码实现竖屏模式"涉及的关键技术点主要包括XE7版本的Android开发、ZXing库的使用以及在竖屏模式下实现条码扫描功能。 【XE7】是Embarcadero Technologies公司推出的一个...

    zxing竖屏二维码扫描

    3. **处理旋转**:由于默认的ZXing可能未考虑竖屏模式,因此需要处理摄像头预览的旋转问题。这可以通过重写`onOrientationChanged`方法并根据设备的旋转角度调整预览数据。 4. **优化扫描性能**:为了提高近距离...

    zxing 竖屏完美解决

    综上所述,"zxing 竖屏完美解决"是关于如何在Android应用中使用ZXing库,特别是在竖屏模式下,确保二维码图像的显示和扫描功能的稳定性和用户体验。这个解决方案涵盖了Android开发的多个方面,包括屏幕适配、库集成...

    Android Zxing 免安裝 扫描和扫条码实现竖屏模式1

    【Android Zxing 免安装扫描和扫条码实现竖屏模式】是指在Android应用中集成Zxing库,实现无需用户额外安装应用即可进行二维码或条形码扫描的功能,并且支持竖屏模式。Zxing(ZXing,意为“zebra crossing”,斑马线...

    android zxing条码扫描源码

    《Android Zxing条码扫描源码解析》 在Android应用开发中,Zxing(又称为ZXing,意为“快速可扩展的二进制解码”)是一个强大的开源项目,专注于各种类型的条码扫描和生成。它提供了跨平台的库,使得开发者能够轻松...

    Android Zxing竖屏扫描二维码

    【Android Zxing竖屏扫描二维码】是Android平台上实现二维码快速、精准扫描的一种技术应用。Zxing,全称为“ZXing(”zebra crossing“的缩写,斑马线)”,是一个开源的、跨平台的条码扫描库。在Android开发中,...

    android(zxing)全屏二维码识别,全屏扫描二维码,近距离扫描二维码,图片识别二维码

    首先,ZXing(Zebra Crossing)是一个开源的条码图像处理库,它支持多种格式的编码和解码,包括QR码和条形码。在Android应用中,ZXing可以被集成到项目中,以实现扫描和生成二维码的功能。 1. **集成ZXing库** 在...

    Android Zxing包 调用摄像头扫描

    在你的项目中,你可能需要调用Zxing来利用手机的摄像头进行一维码和二维码的扫描。下面我们将深入探讨如何在Android应用中集成Zxing以及相关的关键知识点。 **1. 添加Zxing依赖** 首先,你需要在你的Android项目的...

    Zxing二维码扫描,竖屏仿QQ扫一扫

    标题“Zxing二维码扫描,竖屏仿QQ扫一扫”暗示我们将探讨如何使用Zxing库在Android应用中实现一个类似QQ的竖屏二维码扫描功能。QQ扫一扫是腾讯公司开发的一款功能强大的二维码扫描工具,用户可以通过它快速扫描并...

    android Zxing扫描二维码条形码功能仿微信自定义扫码框扫描线边框样式Android studio版本

    在Android开发中,集成二维码和条形码扫描功能是一项常见的需求。Zxing(又名ZXing,意为“zebra crossing”)是一个开源项目,提供了跨平台的多种条码读取功能,包括二维码和条形码。在这个项目中,我们将讨论如何...

    四步将ZXing横屏改竖屏方法.pdf

    本文介绍了如何通过修改ZXing源代码,将默认的横屏扫描界面改为竖屏扫描,具体以Delphi环境和Android平台为例,逐步说明了实现过程。 首先,在Delphi环境中调用ZXing源代码实现扫码功能时,可能会发现显示的界面...

    android Zxing扫描二维码条形码功能仿微信自定义扫码框扫描线边框样式Eclipse版本

    Zxing(又称为ZXing,意为“快速可扩展的条形码”)是一个开源项目,提供了跨平台的条码读取库,适用于Java、Android以及其他多种编程语言。在本项目中,我们将讨论如何在Eclipse环境下,使用Zxing库实现类似微信的...

    android上使用ZXing识别条形码和二维码

    在Android平台上进行条形码和二维码的识别与生成,ZXing库是一个不可或缺的工具。ZXing,全称为“Zebra Crossing”,是一个开源项目,提供了多种平台的条码处理能力,包括读取、生成以及解析。在Android应用开发中,...

    Android Zxing 转换竖屏扫描且提高识别率的方法

    Android Zxing 转换竖屏扫描且提高识别率的方法是指在 Android 平台上使用 Zxing 库时,如何将默认的横屏扫描转换为竖屏扫描,并且提高扫描识别率的方法。 转竖屏步骤: 1. 在 AndroidManifest.xml 文件中,把 ...

    安卓zxing扫描二维码竖屏精简版demo

    【安卓ZXing扫描二维码竖屏精简版Demo详解】 在移动开发领域,二维码已经成为一种常见的数据交换和识别方式。ZXing(Zebra Crossing)是一个开源的、跨平台的二维码和条形码处理库,适用于Java、Android以及其他...

Global site tag (gtag.js) - Google Analytics