Android Camera2 ImageReader неправильный размер на Android 5.0 Galaxy S5

#android #android-camera2

#Android #android-camera2

Вопрос:

Я пытаюсь применить Camera2 api для съемки. Я получил правильный результат Android 6.0.1 и 5.1.1 , но нет 5.0 . Я понятия не имею, почему.

 CameraCharacteristics characteristics = manager.getCameraCharacteristics(cameraDevice.getId());

Size[] jpegSizes = null;

if (characteristics != null) {
    jpegSizes = characteristics.get(CameraCharacteristics.SCALER_STREAM_CONFIGURATION_MAP).getOutputSizes(ImageFormat.JPEG);
}


if (jpegSizes != null amp;amp; 0 < jpegSizes.length) {
    width = jpegSizes[0].getWidth();
    height = jpegSizes[0].getHeight();
    Log.i("jpegSizes width : ", String.valueOf(width));
    Log.i("jpegSizes height : ", String.valueOf(height));
}


ImageReader reader = ImageReader.newInstance(width, height, ImageFormat.JPEG, 1);
        List<Surface> outputSurfaces = new ArrayList<Surface>(2);
        outputSurfaces.add(reader.getSurface());
        outputSurfaces.add(new Surface(new SurfaceTexture(10)));



final CaptureRequest.Builder captureBuilder = cameraDevice.createCaptureRequest(CameraDevice.TEMPLATE_STILL_CAPTURE); //  TEMPLATE_VIDEO_SNAPSHOT


captureBuilder.addTarget(reader.getSurface());


captureBuilder.set(CaptureRequest.CONTROL_MODE, CameraMetadata.CONTROL_MODE_AUTO);
  

И это размеры в массиве jpegSizes.

  I/takepic w :: 5312 h : 2988
 I/takepic w :: 3984 h : 2988
 I/takepic w :: 3264 h : 2448
 I/takepic w :: 3264 h : 1836
 I/takepic w :: 2560 h : 1920
 I/takepic w :: 2048 h : 1152
 I/takepic w :: 1920 h : 1080
 I/takepic w :: 1280 h : 960
 I/takepic w :: 1280 h : 720
 I/takepic w :: 800 h : 480
 I/takepic w :: 640 h : 480
  

Я перепробовал их все, но всегда получаю эту ошибку:

E / CameraDevice-0-LE: поверхность с размером (w = 1, h = 1) и форматом 0x1 недопустима, недопустимый размер: [1920×1080, 1440×1080, 1280×720, 1056×864, 960×720, 800×480, 720×480, 640×480, 352×288, 320×240, 176×144]

W / CameraDevice-JV-0: сбой настройки потока

E / CameraCaptureSession: сеанс 0: не удалось создать сеанс захвата; сбой настройки

Пожалуйста, дайте мне какое-либо решение.

Комментарии:

1. Любое решение для этого?

Ответ №1:

В моем случае использование TextureView вместо AutoFitTextureView решило проблему размера на Android 5.0. Надеюсь, это кому-то поможет.