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
}