参考文章:http://blog.sina.com.cn/s/blog_8d8425f301016s0v.html
http://www.eoeandroid.com/thread-293301-1-1.html
根据第一篇文章修改,确实把横屏修改为竖屏了。 但扫描时图形有变形。
根据第二篇文章修改,也把横屏修改为竖屏了,图形没有变形,但不扫描了。
结合两篇文章进行了一下修改,自己手机测试没有问题。
1.在DecodeHandler.java中,修改decode方法
为
2.在CameraManager.java中,注释代码:
修改为
3.在CameraConfigurationManag
4.在AndroidManifest.xml中,把Activity的属性android:screenOrientation="landscape"
改为
5.在CameraConfigurationManager中的initFromCameraParameters()方法的Log.d(TAG, "Screen resolution: " + screenResolution);句后面添加如下代码,这段代码是为了解决摄像头竖过来后图像拉伸的问题://为竖屏添加
Point screenResolutionForCamera =new Point();
screenResolutionForCamera.x = screenResolution.x;
screenResolutionForCamera.y = screenResolution.y;
if (screenResolution.x < screenResolution.y) {
screenResolutionForCamera.x = screenResolution.y;
screenResolutionForCamera.y = screenResolution.x;
} // 下句第二参数要根据竖屏修改
cameraResolution = getCameraResolution(parameters, screenResolutionForCamera);
这第5点就是为了解决第一篇文章,图形变形的问题。这样编译后就没有问题。
如果没有修改第四点,图片就会变反。(查看所有Android项目的AndroidManifest.xml文中对CaptureActivity的配置中所有screenOrientation都为portrait)
如果想把摄像头的取景框长宽设成一样(感觉取景框有点小的话),可以进行如下修改
把在CameraManager.java的getFramingRect方法中把
framingRect = new Rect(leftOffset, topOffset, leftOffset + width, topOffset + height);
替换成
framingRect = new Rect(leftOffset, topOffset, leftOffset + width, topOffset + width);