Я занимаюсь разработкой приложения для Android, которое должно показывать камеру внутри LinearLayout.Я создаю фрагмент с объектом SurfaceView и Camera2.После большой работы я мог показать камеру поверх вида, но у меня проблемы с размером.
Изображение с камеры начинает показываться только частично, а остальное - просто черный экран.Я пытался определить ширину и высоту, которые мне дает SurfaceChanged с помощью setFixedSize, но я получаю эту ошибку
Поверхность с размером (w = 516, h = 828) и форматом 0x4 недопустим, размер не указан в допустимом наборе: [1440x1080, 1280x720, 960x720, 880x720, 960x540, 720x540, 800x480, 720x480, 640x480, 528x432, 352x288, 320x240, 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
}
И это изображение, которое я получаю