Я использую образец кода Google для реализации API камеры 2 в моем приложении. Камера работает нормально, но проблема в том, что когда я блокирую и разблокирую свое устройство, камера зависает, и мое приложение вылетает с кодом ошибки:
java.lang.RuntimeException: Time out waiting to lock camera opening
Вот код onResume () и код openCamera (), откуда он выбрасывает это исключение:
override fun onResume() {
super.onResume()
startBackgroundThread()
if (textureView.isAvailable) {
openCamera(textureView.width, textureView.height)
} else {
textureView.surfaceTextureListener = surfaceTextureListener
}
}
private fun openCamera(width: Int, height: Int) {
val permission = ContextCompat.checkSelfPermission(this, CAMERA)
if (permission != PackageManager.PERMISSION_GRANTED) {
requestCameraPermission()
return
}
setUpCameraOutputs(width, height)
configureTransform(width, height)
val manager = getSystemService(Context.CAMERA_SERVICE) as CameraManager
try {
// Wait for camera to open - 2.5 seconds is sufficient
if (!cameraOpenCloseLock.tryAcquire(2500, TimeUnit.MILLISECONDS)) {
throw RuntimeException("Time out waiting to lock camera opening.")
}
manager.openCamera(cameraId, stateCallback, backgroundHandler)
} catch (e: CameraAccessException) {
Log.e(TAG, e.toString())
} catch (e: InterruptedException) {
throw RuntimeException("Interrupted while trying to lock camera opening.", e)
}
}
Я видел много потоков SO, но большинство из них относятся к Camera API, а не Camera 2 api. Я также сравнил код с образцом кода Google, и оба они одинаковы. Поэтому, пожалуйста, подскажите какое-либо решение для этого.
Изменить: эта ошибка существует как в примере кода Google для камеры, так и в видео.