开发一个安卓手机上的软件,其中用到了二维码扫描的功能,采用了google开源项目zxing。zxing的android演示例子在公司所有测试机通过,但是在三星note1上测试时发现花屏,后找到解决办法!!!
摄像头采集的数据在屏幕预览时出现花屏往往是因为摄像头不支持preview的尺寸所导致。检查代码中什么地方调用了setPreviewSize方法,再往前追踪,在实机测试时打印出实际使用的preview的尺寸,终于发现在竖屏状态下改尺寸被设置为980*800,这都是高清视频的标准了。可恶的三星,明明不支持,但在camera的supportedPreviewSizes里却都罗列了出来。
(1)
找到CameraConfigurationManager.java文件
在screenResolution = new Point(display.getWidth(), display.getHeight());这句之后增加以下代码
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, screenResolution);为cameraResolution = getCameraResolution(parameters, screenResolutionForCamera);
以上为我的代码修改方法:可以实现