Camera2 размер поверхности

Я разрабатываю приложение для Android, которое должно показывать камеру внутри LinearLayout. Я создаю фрагмент с объектом SurfaceView и Camera2. После большой работы я мог показать камеру поверх вида, но у меня проблемы с размером.

Изображение с камеры начинает показываться только частично, а остальное - просто черный экран. Я пытался определить ширину и высоту, которые мне дают SurfaceChanged с помощью setFixedSize, но я получаю эту ошибку

Поверхность с размером (w=516, h=828) и форматом 0x4 недопустима, размер недопустим. Размер: [1440x1080, 1280x720, 960x720, 880x720, 960x540, 720x540, 800x480, 720x480, 640x480, 528x432, 352x288, 320x2 176x144]

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

Я не могу понять, что я делаю не так.

Это мой макет

 <LinearLayout
        android:id="@+id/contenedor1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginEnd="8dp"
        android:layout_marginStart="8dp"
        android:layout_marginTop="8dp"
        android:orientation="vertical"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent">

    </LinearLayout>

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

val map = cameraCharacteristics!!.get(CameraCharacteristics.SCALER_STREAM_CONFIGURATION_MAP)    

                medida= map.getOutputSizes(SurfaceHolder::class.java)[0]
                w=medida.width
                h=medida.height

Затем я установил размер с

override fun surfaceCreated(p0: SurfaceHolder?) {
        p0!!.setFixedSize(w,h)

        Superficie = p0!!.surface
    }

И это изображение, которое я получаю введите описание изображения здесь

0 ответов

Другие вопросы по тегам