2015-12-11 8 views
0

Я больше ничего не могу поделать, я прочитал каждую тему об этом в stackoverflow, но ничто не устранило бы мою проблему.Предварительный просмотр камеры искажен

Я пытаюсь настроить предварительный просмотр камеры в FrameLayout, все работает нормально. Я правильно определить размер для предварительного просмотра с этим кодом:

private Camera.Size getBestPreviewSize(int width, int height, 
              Camera.Parameters parameters) { 
    Camera.Size result = null; 
    for (Camera.Size size : parameters.getSupportedPreviewSizes()) { 
     if (size.width <= width && size.height <= height) { 
      if (result == null) { 
       result = size; 
      } else { 
       int resultArea = result.width * result.height; 
       int newArea = size.width * size.height; 
       if (newArea > resultArea) { 
        result = size; 
       } 
      } 
     } 
    } 
    return (result); 
} 

Потом я применить его к моей камере:

Camera.Parameters params = mCamera.getParameters(); 
Camera.Size size = getBestPreviewSize(width, height, params); 
params.setPreviewSize(size.width, size.height); 
params.setFocusMode(Camera.Parameters.FOCUS_MODE_AUTO); 
mCamera.setParameters(params); 

предварительный просмотр еще искаженный впоследствии, и моему FrameLayout, что я ожидал, чтобы иметь того же размера, что и размер предварительного просмотра, который я вычислил, остается полноэкранным.

Полноэкранный означает 1920х1200 изображение Размер означает 1920х1080

Так что я сделал, я установил мой размер FrameLayout вручную вычисленной Preview Size. Затем, однако, мой Preview выглядит еще более искаженным.

Я понятия не имею, что я делаю неправильно. Я думал, что когда я использую поддерживаемый размер предварительного просмотра, этого не должно произойти.

UPDATE:

Я побежал мое приложение на другом устройстве, то все работает отлично. Может ли это быть аппаратной ошибкой? Устройство, которое не работает для меня, это планшет Nexus 7.

ответ

0

Я, наконец, пришел к решению, это действительно связано с оборудованием. Существует ошибка с некоторыми устройствами:

Bug-Report

Обойти:

Это известная проблема низкого уровня с некоторыми устройствами; они требуют, чтобы размер неподвижного изображения и размер предварительного просмотра соответствовали пропорциям, чтобы избежать растягивания артефактов.

Если возможно для вашего приложения, сопоставьте пропорции для setPreviewSize и setPictureSize.

Надейтесь, что это вам тоже поможет!

Смежные вопросы