最近在搞一个关于条形码扫描的软件,需求需要扫描时是竖屏。
最后在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]; |
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 ); |
04 |
if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) { |
05 |
parameters.set( "orientation" , "portrait" ); |
06 |
parameters.set( "rotation" , 90 ); |
08 |
if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) { |
09 |
parameters.set( "orientation" , "landscape" ); |
10 |
parameters.set( "rotation" , 90 ); |
14 |
protected void setDisplayOrientation(Camera camera, int angle) { |
15 |
Method downPolymorphic; |
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) { |
<!--EndFragment-->
分享到:
相关推荐
最后,`Android Zxing 扫描条码实现竖屏模式(portrait mode) 摄像头camera 旋转90度.txt`文档很可能是详细的实现步骤或代码示例。它可能包含了如何在ZXing库基础上进行修改,以适应竖屏扫描和旋转相机的详细说明。 ...
在Android开发中,ZXing(Zebra Crossing)是一个开源项目,提供了一套全面的二维码和条形码扫描库。ZXing库广泛应用于移动设备上的扫描应用,如二维码生成、扫描和解析。本教程将深入探讨如何将ZXing 3.2版本从默认...
1. **ZXing (Zebra Crossing)**: ZXing是一个开源的、多平台的一维和二维条码图像处理库,支持多种格式的编码和解码,如QR码、条形码等。在Android平台上,ZXing常用于实现二维码扫描功能。 2. **在Delphi XE10中...
ZXing(Zebra Crossing)是Google开发的一个开源项目,它为多种平台提供了强大的条形码和二维码处理能力。在Android平台上,ZXing被广泛应用于移动设备的二维码/条码扫描功能,使得用户能够轻松地读取和生成这些编码...
【标题】"XE7 Android Zxing免安裝 扫描和扫条码实现竖屏模式"涉及的关键技术点主要包括XE7版本的Android开发、ZXing库的使用以及在竖屏模式下实现条码扫描功能。 【XE7】是Embarcadero Technologies公司推出的一个...
3. **处理旋转**:由于默认的ZXing可能未考虑竖屏模式,因此需要处理摄像头预览的旋转问题。这可以通过重写`onOrientationChanged`方法并根据设备的旋转角度调整预览数据。 4. **优化扫描性能**:为了提高近距离...
综上所述,"zxing 竖屏完美解决"是关于如何在Android应用中使用ZXing库,特别是在竖屏模式下,确保二维码图像的显示和扫描功能的稳定性和用户体验。这个解决方案涵盖了Android开发的多个方面,包括屏幕适配、库集成...
【Android Zxing 免安装扫描和扫条码实现竖屏模式】是指在Android应用中集成Zxing库,实现无需用户额外安装应用即可进行二维码或条形码扫描的功能,并且支持竖屏模式。Zxing(ZXing,意为“zebra crossing”,斑马线...
《Android Zxing条码扫描源码解析》 在Android应用开发中,Zxing(又称为ZXing,意为“快速可扩展的二进制解码”)是一个强大的开源项目,专注于各种类型的条码扫描和生成。它提供了跨平台的库,使得开发者能够轻松...
【Android Zxing竖屏扫描二维码】是Android平台上实现二维码快速、精准扫描的一种技术应用。Zxing,全称为“ZXing(”zebra crossing“的缩写,斑马线)”,是一个开源的、跨平台的条码扫描库。在Android开发中,...
首先,ZXing(Zebra Crossing)是一个开源的条码图像处理库,它支持多种格式的编码和解码,包括QR码和条形码。在Android应用中,ZXing可以被集成到项目中,以实现扫描和生成二维码的功能。 1. **集成ZXing库** 在...
在你的项目中,你可能需要调用Zxing来利用手机的摄像头进行一维码和二维码的扫描。下面我们将深入探讨如何在Android应用中集成Zxing以及相关的关键知识点。 **1. 添加Zxing依赖** 首先,你需要在你的Android项目的...
标题“Zxing二维码扫描,竖屏仿QQ扫一扫”暗示我们将探讨如何使用Zxing库在Android应用中实现一个类似QQ的竖屏二维码扫描功能。QQ扫一扫是腾讯公司开发的一款功能强大的二维码扫描工具,用户可以通过它快速扫描并...
在Android开发中,集成二维码和条形码扫描功能是一项常见的需求。Zxing(又名ZXing,意为“zebra crossing”)是一个开源项目,提供了跨平台的多种条码读取功能,包括二维码和条形码。在这个项目中,我们将讨论如何...
本文介绍了如何通过修改ZXing源代码,将默认的横屏扫描界面改为竖屏扫描,具体以Delphi环境和Android平台为例,逐步说明了实现过程。 首先,在Delphi环境中调用ZXing源代码实现扫码功能时,可能会发现显示的界面...
Zxing(又称为ZXing,意为“快速可扩展的条形码”)是一个开源项目,提供了跨平台的条码读取库,适用于Java、Android以及其他多种编程语言。在本项目中,我们将讨论如何在Eclipse环境下,使用Zxing库实现类似微信的...
在Android平台上进行条形码和二维码的识别与生成,ZXing库是一个不可或缺的工具。ZXing,全称为“Zebra Crossing”,是一个开源项目,提供了多种平台的条码处理能力,包括读取、生成以及解析。在Android应用开发中,...
Android Zxing 转换竖屏扫描且提高识别率的方法是指在 Android 平台上使用 Zxing 库时,如何将默认的横屏扫描转换为竖屏扫描,并且提高扫描识别率的方法。 转竖屏步骤: 1. 在 AndroidManifest.xml 文件中,把 ...
【安卓ZXing扫描二维码竖屏精简版Demo详解】 在移动开发领域,二维码已经成为一种常见的数据交换和识别方式。ZXing(Zebra Crossing)是一个开源的、跨平台的二维码和条形码处理库,适用于Java、Android以及其他...