第一步找到zxinglib包下面的这个类:CameraConfigurationManager下面的这个方法:initFromCameraParameters作出如下修改:
void initFromCameraParameters(Camera camera) {
Camera.Parameters parameters = camera.getParameters();
WindowManager manager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
Display display = manager.getDefaultDisplay();
Point theScreenResolution = new Point();
display.getSize(theScreenResolution);
screenResolution = theScreenResolution;
Log.i(TAG, "Screen resolution: " + screenResolution);
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 = CameraConfigurationUtils.findBestPreviewSizeValue(parameters, screenResolution);
cameraResolution = CameraConfigurationUtils.findBestPreviewSizeValue(parameters, screenResolutionForCamera);
// 修改↑
Log.i(TAG, "Camera resolution: " + cameraResolution);
}
导致拉伸的原因,网上有一种说法是zxing默认是横屏状态这里做了一个判断把屏幕倒过来就不会拉长可以获取到二维码中的内容了