Zxing 竖屏切换 android

在google上下载的ZxingDemo 为横屏状态

我简单的在Androidmanifest.xml把Activity换成竖屏android:screenOrientation="portrait"

屏幕虽然正了 但是屏幕上显示的拍摄画面还是横着的

查了一些网上的资料 结合自己手工调试

在这里总结分享一下

步骤:

1) 在AndroidManifest.xml中把<Activity />标签 CaptureActivity 的screenOrientation修改为

android:screenOrientation="portrait"


2) 在CameraManager.java类中的getFramingRectInPreview()替换掉原先的 left right top bottom

            //竖屏      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; 


3) 在CameraConfigurationManager.java中void setDesiredCameraParameters(Camera camera)方法

在setParameters之前增加

camera.setDisplayOrientation(90);


4) 在DecodeHandler.java中的decode(byte[] data, int width, int height)方法在

PlanarYUVLuminanceSource source = CameraManager.get().buildLuminanceSource(data, width, height);

之前添加:

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;


5) 将CameraConfigurationManager的 initFromCameraParameters(Camera camera)方法整个替换如下

该方法防止竖屏后屏幕拉伸

/** * Reads, one time, values from the camera that are needed by the app. */void initFromCameraParameters(Camera camera) {Camera.Parameters parameters = camera.getParameters();previewFormat = parameters.getPreviewFormat();previewFormatString = parameters.get("preview-format");Log.d(TAG, "Default preview format: " + previewFormat + '/'+ previewFormatString);WindowManager manager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);Display display = manager.getDefaultDisplay();screenResolution = new Point(display.getWidth(), display.getHeight());Log.d(TAG, "Screen resolution: " + screenResolution);    Point screenResolutionForCamera = new Point();       screenResolutionForCamera.x = screenResolution.x;       screenResolutionForCamera.y = screenResolution.y;           // preview size is always something like 480*320, other 320*480    if (screenResolution.x < screenResolution.y) {           screenResolutionForCamera.x = screenResolution.y;           screenResolutionForCamera.y = screenResolution.x;    }cameraResolution = getCameraResolution(parameters, screenResolutionForCamera);//cameraResolution = getCameraResolution(parameters, screenResolution);Log.d(TAG, "Camera resolution: " + screenResolution);}


至此Zxing 横屏就切换为竖屏

不足之处请在下方留言 谢谢

希望对您有用

资源下载地址:http://download.csdn.net/detail/aaawqqq/7281577

更多相关文章

  1. Android 尺寸单位转换和屏幕适配相关
  2. Android 屏幕适配:最全面的解决方案
  3. Android读写文件正确实行方法介绍
  4. Android实现给TableLayou绘制边框的方法
  5. android中textview字数过长解决方法
  6. 关于Android横竖屏切换的解决方法
  7. CardView 添加背景图片、改变颜色、水波纹效果的方法
  8. Android高手进阶教程(十一)--Android 通用获取Ip的方法(判断手机
  9. Android Studio之工程中导入jni库方法

随机推荐

  1. 在Ubuntu下搭建Android(安卓)SDK开发环境
  2. Android(安卓)工具包 xUtils 3.3.16
  3. [android]android自动化过程遇到的问题
  4. Android(安卓)ToolBar使用
  5. Android开发之多点触摸(Multitouch)
  6. Android:控件布局(表格布局)TableLayout
  7. Android实战技巧:常用开发FAQ(续)
  8. android rk及allwinner方案bug解决方法集
  9. Android(安卓)蓝牙4.0 BLE 理解
  10. 移动端页面的特点