Android zxing -Предварительный просмотр портретной камеры/вид поверхности растянут/искажен

Мне удалось использовать ответ здесь, чтобы повернуть предварительный просмотр камеры в портретную: http://code.google.com/p/zxing/issues/detail?id=178#c46

однако сам предварительный просмотр растянут/деформирован -кажется, что высота растягивается, чтобы заполнить поле (, но может случиться так, что ширина слишком велика для экрана, и он сжимается, чтобы соответствовать)

Есть ли способ «обернуть» содержимое, а не растянуть его, чтобы оно соответствовало поверхности?

РЕДАКТИРОВАТЬ :Я отсортировал его, изменив метод «findBestPreviewSizeValue» в «CameraConfigurationManager» и поменяв местами точки X и Y (, спасибо Шону Оуэну за указатель ниже! ), вот код:

private static Point findBestPreviewSizeValue(CharSequence previewSizeValueString,
  Point screenResolution) {
int bestX = 0;
int bestY = 0;
int diff = Integer.MAX_VALUE;
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 {
    newY = Integer.parseInt(previewSize.substring(0, dimPosition));
    newX = Integer.parseInt(previewSize.substring(dimPosition + 1));
    //original:
    //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);
  if (newDiff == 0) {
    bestX = newY;
    bestY = newX;
    //original:
    //bestX = newX;
    //bestY = newY;
    break;
  } else if (newDiff < diff) {
    bestX = newY;
    bestY = newX;
    //original:
    //bestX = newX;
    //bestY = newY;
    diff = newDiff;
  }

}

if (bestX > 0 && bestY > 0) {
  return new Point(bestX, bestY);
}
return null;
}
17
задан AndroidNoob 17 July 2012 в 11:10
поделиться