Android ZXing改横屏识别为竖屏识别[转]

解决方法:

1.在DecodeHandler.java中,修改decode方法

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

byte[]rotatedData=newbyte[data.length];

for(inty=0;y<height;y++){

for(intx=0;x<width;x++)

rotatedData[x*height+height-y-1]=data[x+y*width];

}

inttmp=width;//Hereweareswapping,that'sthedifferenceto#11

width=height;

height=tmp;

PlanarYUVLuminanceSourcesource=CameraManager.get().buildLuminanceSource(rotatedData,width,height);

2.在CameraManager.java中,注释代码:

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

修改为

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中,在setDesiredCameraParameters方法中添加一句

camera.setDisplayOrientation(90);

4.在AndroidManifest.xml中,把Activity的属性android:screenOrientation="landscape"

改为

android:screenOrientation="portrait"

相关推荐