项目中用ZXing做的二维码扫描,在部分5.0和6.0的手机上扫描变形了,网上找了老半天终于是修改成功了,记录下解决办法。修改CameraConfigurationManager.Java下的findBestPreviewSizeValue()方法中的一句代码:
<span style="color:#555555;"> private static Point findBestPreviewSizeValue(CharSequence previewSizeValueString, Point screenResolution) {
int bestX = 0;
int bestY = 0;
// int diff = Integer.MAX_VALUE;
float diff=Integer.MAX_VALUE; //将之前的int 型数据改成float数据
for (String previewSize : COMMA_PATTERN.split(previewSizeValueString)) {
previewSize = previewSize.trim();
int dimPosition = previewSize.indexOf('x');
if (dimPosition < 0) {
Log.w(TAG, "Bad preview-size: " + previewSize);
continue;
}
int newX;
int newY;
try {
newX = Integer.parseInt(previewSize.substring(0, dimPosition));
newY = Integer.parseInt(previewSize.substring(dimPosition + 1));
} catch (NumberFormatException nfe) {
Log.w(TAG, "Bad preview-size: " + previewSize);
continue;
}
//int newDiff = Math.abs(newX - screenResolution.x) + Math.abs(newY - screenResolution.y);
float newDiff = Math.abs(screenResolution.x * 1.0f / newY - screenResolution.y * 1.0f / newX); //将之前的int 型数据改成float数据
if (newDiff == 0) { bestX = newX; bestY = newY; break; } else if (newDiff < diff) { bestX = newX; bestY = newY; diff = newDiff; } }</span>