第一步找到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默認是橫屏狀態這裏做了一個判斷把屏幕倒過來就不會拉長可以獲取到二維碼中的內容了