android zxing二维码横屏改竖屏

原创 2015年11月19日 17:14:50

转载请注明出处:http://blog.csdn.net/zhouli_csdn/article/details/49930323


1.修改manifest文件,将CaptureActivity的screenOrentatino设为portrait。

2.摄像头调整为竖向在CameraConfigurationManager类中添加如下方法:

protected void setDisplayOrientation(Camera camera, int angle) {//mycode

      Method downPolymorphic;       

       try { 
           
           downPolymorphic = camera.getClass().getMethod("setDisplayOrientation", new Class[] { int.class });
     
           if (downPolymorphic != null)
               
               downPolymorphic.invoke(camera, new Object[] { angle });       
     
       } catch (Exception e1) {   
           e1.printStackTrace();
       }      
}
在CameraConfigurationManager的setDesiredCameraParameters方法中调用此方法。

setDisplayOrientation(camera, 90);//mycode


3.CameraConfigurationManager类的initFromCameraParameters方法中注释一下代码:

//这段代码用于横屏的时候+
    /*if (width < height) {
      Log.i(TAG, "Display reports portrait orientation; assuming this is incorrect");
      int temp = width;
      width = height;
      height = temp;
    }*/

4.CameraManager类的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;*/
      
      //竖屏模式mycode
      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;
5.CameraManager类的getFramingRect方法修改:
//用于横屏时候的扫描mycode
      //int width = findDesiredDimensionInRange(screenResolution.x, MIN_FRAME_WIDTH, MAX_FRAME_WIDTH);
      //int height = findDesiredDimensionInRange(screenResolution.y, MIN_FRAME_HEIGHT, MAX_FRAME_HEIGHT);
      
      //用于竖屏的扫描
      int height = findDesiredDimensionInRange(screenResolution.x, MIN_FRAME_WIDTH, MAX_FRAME_WIDTH);
      int width = findDesiredDimensionInRange(screenResolution.y, MIN_FRAME_HEIGHT, MAX_FRAME_HEIGHT);

6.DecodeHandler修改decode方法

PlanarYUVLuminanceSource source = activity.getCameraManager().buildLuminanceSource(data, width, height);之前加入一下代码

//mycode
    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; // Here we are swapping, that's the difference to #11
    width = height;
    height = tmp;
    data = rotatedData;
    
    PlanarYUVLuminanceSource source = activity.getCameraManager().buildLuminanceSource(data, width, height);



Android开源二维码识别项目zxing横屏改为竖屏识别解决方案

在网上找了很多方法,但最后都有问题,自己调试了好几个小时,最后终于完美解决了竖屏识别。 首先你需要有zxing项目的简化版代码。 使用简化版可以免去许多不必要的代码,方便学习研究,更好定位...

android zxing 扫描二维码 横屏转竖屏

Zxing 竖屏切换  Android 在google上下载的ZxingDemo 为横屏状态   我简单的在Androidmanifest.xml把Activity换成竖屏android:scre...

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

完美解决Android使用Zxing扫描二维码改成竖屏后,后面的预览画面出现了拉伸,扭曲的情况 第一步:找到com.zxing.camera包下的CameraConfigurationManage...

Android Zxing竖屏扫描二维码

  • 2017年06月29日 16:32
  • 21.49MB
  • 下载

Android zxing3.2完美横屏改竖屏

  • 2017年01月12日 22:54
  • 1.06MB
  • 下载

解决Android二维码扫描ZXing竖屏拉伸变长闪退扫描区域小等问题

Android 基于google Zxing实现二维码、条形码扫描,仿微信二维码扫描效果 这篇文章写的不错,但是按照这篇文章使用二维码的话会出现竖屏扫描图像拉伸变长的问题(有一个地方计算错误),解决...

Android开源库之使用ZXing开源库二维码-实现竖屏且高识别率

ZXing开源库默认是横屏显示,在改为竖屏显示后,手动设定扫描匡的宽高,会发现近距离扫描二维码时,无法扫描成功,需要稍微远一点距离扫描,才能顺利扫描成功,分析应该是设置扫描匡的宽高后,其实际的扫描区域...

Android集成ZXing二维码扫描,附加竖屏并且不拉伸图片的demo

可能
  • dqksky
  • dqksky
  • 2014年09月14日 09:37
  • 2341

Android项目如何集成ZXing二维码扫描功能(精简、竖屏、解决图像拉伸、工程库形式)

在偶的《Android项目如何集成ZXing二维码扫描功能》文章中,初步

Android 使用Zxing实现二维码,横切竖屏预览扭曲变开的解决方法

在使用Zxing 实现app 的二维码功能时,发现在切换着竖屏扫码时,显示的预览的物件会被拉伸变形了。此时,可以通过下面的方式来修复这个bug。...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:android zxing二维码横屏改竖屏
举报原因:
原因补充:

(最多只允许输入30个字)