android中使用zxing横屏扫描处理

在用到条码扫描过程中.默认的情况就不说了.时间的开发中不管是扫描还是任何一个功能模块.都不可能全部是默认的.尤其是android开发.各种自定义.

我在做Yibin药皮你检测的时候因为用到了tabhost.如果是在手机上的横屏显示的话.屏幕太小.所以只能竖屏显示.但是竖屏显示.相机扑捉到的的旋转90的内容.要想让屏幕竖屏显示.因为我的tabhost是竖屏的.所以扫描的页面可定也是竖屏的.在主配置文件中的activity标签中添加 android:screenOrientation="portrait" 竖屏显示.

在CameraManager类中的openDriver方法的最后添加设置camera.setDisplayOrientation(90); 让相机的画面旋转90,跟着手机的屏幕正确的显示,这个做了之后,条码是扫不出来的.因为只是把相机的扑捉的画面旋转了.真正解析的部分的画面还没有真正的旋转.所以还要改一个地方,在DecodeHandler类中decode方法中将

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];
		 }
PlanarYUVLuminanceSource source = CameraManager.get().buildLuminanceSource(rotatedData, width, height);


换了这个之后短的条码就能扫描了.本来我以为横屏扫描在这个项目中就可以结束了.谁知道老板拿了一老长的条码来.一试扫这么反应.想了半天.有想过改程序外框架为左侧菜单.这样就能时候zxing的默认横拼扫描了.左侧菜单没有做过.估计一时半会也拿不下.就想着吧zxing扫描的框变长一点,竖着看的话.应该是高一点.就是竖着拿手机.显示的是横着的画面.这样在平板上也好用点.后俩界面改好了.也能扫描了.可移植到项目上就又不行了,然后就奇怪的发现扫不出的原因了 .是因为红线没有对应到真正扫描解码的位置.我把图片对应到扫描区域的上边.扫出来了.我晕.然后我就该扫描区域的大小.调整红线的位置.调好了.也能扫描了.就是扫描框比之前窄了.看着不是很顺眼.后来在一个博客中看到了下面的内容

 

点开包com.google.zxing.client.android.camera 下 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;  // 修改前这四行 注释
      /**
       * 修改后 www.2cto.com
       */
      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;


我之前调正了.也能扫描了.不过框小不太好看.我就试了试这个.这个挺好的.不用改变ViewfinderView类里的参数了.这个类里面画图的参数好难改呀.试了上面的方法.扫描框大小正常了.也能扫描了.感谢这个博客的作者:http://www.2cto.com/kf/201212/173338.html

你可能感兴趣的:(android)