87497718 2012-04-18
解决方法:
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"