java .lang.RuntimeException: время ожидания для блокировки камеры открытия камеры 2 api - PullRequest
0 голосов
/ 06 августа 2020

Я использую образец кода 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 для камеры, так и в видео.

...