Versi Android: 5.1
Hai, saya perhatikan bahwa setelah aplikasi saya menggunakan camera2 API untuk membuatCaptureSession (snapshot/ record), perangkat Android saya tidak lagi memutar video dengan benar, hanya audio dengan layar hitam... dan bukan hanya aplikasi saya, semua aplikasi streaming lainnya mengalami masalah yang sama. Saya perlu reboot untuk memperbaiki masalah ini. BTW, perangkat saya dikustomisasi jadi saya tidak bisa menggunakan ADB dan masalah ini bahkan tidak terjadi di simulator saya.. Saya hanya tidak tahu apa-apa sekarang, itu membunuh saya. Bisakah seseorang membantu saya? Saya akan menghargainya..!! Di bawah ini adalah cara saya membuatCaptureSession dan merilis. Mungkin ada yang salah dengan kode saya?
Foto:
...after camera opened
cameraDevice = p0;
previewTextureListener = PreviewSurfaceTextureListener()
cameraPreview.surfaceTextureListener = previewTextureListener
cameraPreview.setTransform(transform)
...after previewTextureListenerAvailable
val captureWidth = 1920
val captureHeight = 1080
previewSurfaceTexture = surfaceTexture
previewSurfaceTexture?.setDefaultBufferSize(captureWidth, captureHeight)
previewSurface = Surface(previewSurfaceTexture)
val sessionStateCallback = SessionStateCallback()
imageReader = ImageReader.newInstance(captureWidth, captureHeight, ImageFormat.JPEG, 1)
imageReader?.setOnImageAvailableListener(ImageAvailableCallback(), cameraHandler)
imageSurface = imageReader?.surface
val outputs = mutableListOf(previewSurface, imageSurface)
cameraDevice?.createCaptureSession(outputs, sessionStateCallback, mainHandler)
...after sessionStateConfigured
val requestBuilder = cameraDevice?.createCaptureRequest(CameraDevice.TEMPLATE_PREVIEW)
requestBuilder?.addTarget(previewSurface!!)
val request = requestBuilder?.build()
cameraCaptureSession?.setRepeatingRequest(request!!, PreviewImageCallback(), mainHandler)
catatan:
// Start a capture session
cameraDevice?.createCaptureSession(listOf(previewSurface, mediaRecorder?.surface), RecordSessionStateCallback(), cameraHandler)
... after RecordSessionConfigured
val recordRequest = cameraDevice?.createCaptureRequest(CameraDevice.TEMPLATE_RECORD);
recordRequest?.addTarget(previewSurface!!);
recordRequest?.addTarget(mediaRecorder?.surface!!)
cameraRecordSession?.setRepeatingRequest(recordRequest?.build()!!, PreviewImageCallback(), cameraHandler)
Saat aktivitas di Hancurkan:
cameraPreview?.surfaceTextureListener = null
cameraCaptureSession?.stopRepeating()
cameraCaptureSession?.close()
cameraDevice?.close()
cameraDevice = null