【QrCode】Zxing竖屏,并解决变形问题

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

 Camera.Parameters parameters = camera.getParameters();
          WindowManager manager = (WindowManager) context .getSystemService(Context.WINDOW_SERVICE);
          Display display = manager.getDefaultDisplay();
          int width = display.getWidth();
          int height = display.getHeight();
          if (width < height) {
               int temp = width;
               width = height;
               height = temp;
          }
          screenResolution = new Point(height, width);
          cameraResolution = findBestPreviewSizeValue(parameters, new Point(width, height));

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

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-07-31 20:35:33

【QrCode】Zxing竖屏,并解决变形问题的相关文章

Zxing 竖屏切换 android

Zxing 竖屏切换  android 在google上下载的ZxingDemo 为横屏状态 我简单的在Androidmanifest.xml把Activity换成竖屏android:screenOrientation="portrait" 屏幕虽然正了 但是屏幕上显示的拍摄画面还是横着的 查了一些网上的资料   结合自己手工调试 在这里总结分享一下 步骤: 1)   在AndroidManifest.xml中把  <Activity  />标签  CaptureActiv

Android开发:ZXing条码扫描-竖屏解决方案

写在前面的话 感谢ZXing团队,项目下载地址:https://github.com/zxing/zxing,项目下载后,Android条码扫描主要用到三个模块:android,android-core,core.zxing项目解压后目录结构如图所示: android是ZXing提供的条码扫描器apk客户端源码,android-core和core是需要的类库.本文提供的zxing竖屏扫描解决方案采用的android版本号versionName为4.7.4,versionCode为104,zxin

完美解决Android使用Zxing扫描二维码改成竖屏后,后面的预览画面出现了拉伸,扭曲的情况

完美解决解决Android使用Zxing扫描二维码改成竖屏后,后面的预览画面出现了拉伸,扭曲的情况 第一步:找到com.zxing.camera包下的CameraConfigurationManager.java文件中的void initFromCameraParameters(Camera camera)方法 第二步:在 Log.d(TAG, "Screen resolution: " + screenResolution);后加上如下的代码 Point screenResoluti

Zxing二维码精简(竖屏、拉伸处理、扫描框大小和扫描线移动)

本帖最后由 levil_ad 于 2013-12-30 13:55 编辑 最近没事做了下二维码扫描,用的是ZXing的开源代码,官方源码地址:http://code.google.com/p/zxing/downloads/list:我是在ZXing2.2基础上做的,因此只下载了ZXing-2.2.zip:此外还需要ZXing的核心Jar包,下载地址:http://repo1.maven.org/maven2/com/google/zxing/core/2.2/,只需下载core-2.2.jar

ZXing for Android 修改为竖屏模式

zxing github连接:https://github.com/zxing/zxing 以下为修改方法 Step 1: Add following lines to rotate data before buildLuminanceSource(..) in decode(byte[] data, int width, int height) DecodeHandler.java: byte[] rotatedData =newbyte[data.length];for(int y =0;

移动端页面自适应横屏竖屏解决方法思考

之前对于横屏的webapp做过一些尝试,但是始终不是很好的解决方案,前段时间又接触了类似的需求,尝试了感觉更好的解决方案. 之前的方法写的博客:移动网页横竖屏兼容适应的一些体会 这里举的例子还是平时常见的移动端的滑动页面,也就是上下切换页面的"H5". 首先要做的准备: 1.html布局 <div id="wrap"> <div class="pageWrap"> <div class="img11&quo

IOS竖屏应用单个页面横屏的解决办法

昨天朋友问我,怎么实现在竖屏的应用里,显示一个横屏的应用,由于也没做过 就说不知道了,但是我觉得会有这样的API ,因为我手机里就安装有这种类型的软件 今天早上起来,就想做一个Dome出来,惯例的是查找资料,测试是否可以使用,但是 查找了都写的不是很清楚,很容易造成没法实现想要的效果,所以想重新写过一个 希望能帮到有这个需求的朋友.(这个没什么经验,的是照着网上的资料拼凑起来, 如果有错误,请见谅,有更好的办法也可以告诉我) 实现的效果: 页面大部分是竖屏,个别页面可以旋转手机时页面变为横屏(其

Android学习笔记(三六):横屏竖屏的切换

1.准备环境 对模拟器,只要“Ctrl+F12“,就可以可以实现竖屏(portrait)和横屏(landscape)的切换. 2.UI的屏幕切换实现 下面一个简单的例子,如图. 我们需要写两个Android XML文件,假定文件为chapter_19_test1.xml,放在常规目录位置layout/内容如下: [plain] view plaincopy <?xml version="1.0" encoding="utf-8"?> <Linear

iOS 个别页面强制横屏,其他页面竖屏

在开发项目的时候,遇到了一个问题,就是其中一个页面需要强制横屏,而其他页面要强制竖屏. 我的解决方法是这样的.在AppDelegate.h里面添加@property(nonatomic,assign)NSInteger allowRotation;在AppDelegate.m文件里面添加 1 - (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindo