camera2尺寸的表面视图

时间:2018-09-08 18:37:20

标签: android surfaceview android-camera2

我正在开发一个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
    }

这是我得到的图像 enter image description here

0 个答案:

没有答案