Как настроить размер захвата в Camera 2 API - PullRequest
0 голосов
/ 08 октября 2018

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

Итак, сначала я получаю все поддерживаемые размеры разрешения:

Size[] sizes = configurationMap.getOutputSizes(ImageFormat.YUV_420_888);
Log.d("test","size:"+sizes.length);

for(Size size : sizes){
    Log.d("test", "width: " + size.getWidth() + " height" + size.getHeight());
}

Затем я настраиваювход с одним из этих размеров.

InputConfiguration inputConfiguration = new InputConfiguration(1920, 1080, ImageFormat.YUV_420_888);

Я передаю этот вход в сеанс захвата

cameraDevice.createReprocessableCaptureSession(inputConfiguration, Arrays.asList(previewSurface), new CameraCaptureSession.StateCallback() {
    @Override
    public void onConfigured(@NonNull CameraCaptureSession cameraCaptureSession) {
        try {
            cameraCaptureSession.setRepeatingRequest(mCaptureRequestBuilder.build(), null, handler);
        } catch (CameraAccessException e) {
            e.printStackTrace();
        }
    }

    @Override
    public void onConfigureFailed(@NonNull CameraCaptureSession cameraCaptureSession) {
        Toast.makeText(getApplicationContext(),"Camera Preview Failed!!",Toast.LENGTH_SHORT).show();
    }
}, null);

И я также получаю

java.lang.IllegalArgumentException: input size 1920x1080 is not valid

ошибка, хотя этот размер поддерживается на моей камере телефона (из результата отладки getOutputSizes()).

Итак, мой вопрос о моем подходе и где я ошибаюсь.

1 Ответ

0 голосов
/ 08 октября 2018

Не путайте getOutputSizes (imageFormat) с getInputSizes (imageFormat) .Обратите внимание, что вы должны отдельно проверить, что формат поддерживается для ввода или вывода.

...