Kotlin 无法在曲面视图上显示RGB图像
我希望以RGB_565格式从相机获取数据(预览期间),并以相同格式在SurfaceView上显示数据。以下是我为此编写的代码:Kotlin 无法在曲面视图上显示RGB图像,kotlin,camera,surfaceview,surfaceholder,image-formats,Kotlin,Camera,Surfaceview,Surfaceholder,Image Formats,我希望以RGB_565格式从相机获取数据(预览期间),并以相同格式在SurfaceView上显示数据。以下是我为此编写的代码: class CameraPreview( context: Context, private val mCamera: Camera) : SurfaceView(context), SurfaceHolder.Callback , Camera.PreviewCallback { private val mHolder: Surfa
class CameraPreview(
context: Context,
private val mCamera: Camera) : SurfaceView(context), SurfaceHolder.Callback , Camera.PreviewCallback {
private val mHolder: SurfaceHolder = holder.apply {
// Install a SurfaceHolder.Callback so we get notified when the
// underlying surface is created and destroyed.
**setFormat(PixelFormat.RGB_565)**
addCallback(this@CameraPreview)
// deprecated setting, but required on Android versions prior to 3.0
setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS)
}
override fun surfaceCreated(holder: SurfaceHolder) {
var cameraParameters: Camera.Parameters? = mCamera.parameters
cameraParameters?.set("orientation", "portrait")
mCamera.setDisplayOrientation(90)
cameraParameters?.setRotation(90)
**cameraParameters?.previewFormat=ImageFormat.RGB_565**
var x=cameraParameters?.previewFormat
mCamera.parameters = cameraParameters
// The Surface has been created, now tell the camera where to draw the preview.
mCamera.apply {
try {
setPreviewDisplay(holder)
setPreviewCallback(this@CameraPreview)
startPreview()
} catch (e: IOException) {
Log.d(TAG, "Error setting camera preview: ${e.message}")
}
}
}
//Surface Changed
//Surface Destroyed
//OnPreviewCallback
}
但是当我运行代码时,surface视图显示一个白色屏幕。请注意,我已将重要的行突出显示为**..**。删除这些“重要”线后,曲面视图将正确显示相机输出(默认情况下,它接受NV21格式)。要使曲面视图接受并以RGB_565格式显示图像,我必须对代码进行哪些更改