Версия Android: 5.1
Привет! Я заметил, что после того, как мое приложение использует camera2 API для созданияCaptureSession (моментальный снимок/запись), мое устройство Android больше не воспроизводит видео правильно, только звук с черный экран... и это не только мое приложение, во всех других потоковых приложениях возникает та же проблема. Мне нужно перезагрузиться, чтобы решить эту проблему. Кстати, мое устройство настроено таким образом, что я не могу использовать ADB, и эта проблема даже не возникает в моем симуляторе. Сейчас я просто понятия не имею, это убивает меня. Может кто-нибудь помочь мне, пожалуйста? Я буду признателен..!! Ниже показано, как я создаюCaptureSession и выпускаю. Может быть, что-то не так с моим кодом?
Снимок:
...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)
записывать:
// 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)
Когда активность onDestroy:
cameraPreview?.surfaceTextureListener = null
cameraCaptureSession?.stopRepeating()
cameraCaptureSession?.close()
cameraDevice?.close()
cameraDevice = null