Идентификатор камеры Kotlin виден, но невозможен предварительный просмотр (для дополнительной камеры)

Я пытаюсь создать собственное приложение камеры с API2, но столкнулся с такой проблемой: основная и передняя камеры дают нормальный предварительный просмотр, но дополнительная инфракрасная камера присутствует в списке, но когда я переключаюсь на нее, я ничего не получаю предварительный просмотр, просто застрявшее изображение (В приложении OpenCamera все три камеры работают, а ИК-камера имеет ID2. И еще: в OpenCamera она хорошо работает для предварительного просмотра и фотосъемки, но попытка захвата видео приводит к ошибке приложения или сбою)

вот код для открытия предварительного просмотра:

      fun open_camera(){
       if (ActivityCompat.checkSelfPermission(
               this,
               Manifest.permission.CAMERA
           ) != PackageManager.PERMISSION_GRANTED
       ) {
           
           return
       }
       
       cameraManager.openCamera(cameraManager.cameraIdList[cid], object: CameraDevice.StateCallback(){

           override fun onOpened(p0: CameraDevice) {
               cameraDevice = p0
               var capReq = cameraDevice.createCaptureRequest(CameraDevice.TEMPLATE_PREVIEW)

               var surface = Surface(textureView.surfaceTexture)
               capReq.addTarget(surface)
               cameraDevice.createCaptureSession(listOf(surface), object: CameraCaptureSession.StateCallback(){
                   override fun onConfigured(p0: CameraCaptureSession) {
                       cameraCaptureSession = p0
                       cameraCaptureSession.setRepeatingRequest(capReq.build(), null, null)
                   }

                   override fun onConfigureFailed(p0: CameraCaptureSession) {
//                      // TODO("Not yet implemented")
                   }
               },handler)
           }

           override fun onDisconnected(p0: CameraDevice) {
//               TODO("Not yet implemented")
           }

           override fun onError(p0: CameraDevice, p1: Int) {
//               TODO("Not yet implemented")
           }
       },handler)
   }

А вот для переключения камеры:

      setContentView(R.layout.activiti_main)
        seek = findViewById<SeekBar>(R.id.scam)
        var id: String = "0"
        seek?.setOnSeekBarChangeListener(object :
            SeekBar.OnSeekBarChangeListener {
            override fun onProgressChanged(seek: SeekBar,
                                           progress: Int, fromUser: Boolean) {
                cid = progress
                try {
                    ll = cameraManager.cameraIdList.lastIndex
                    if (seek.max !=ll.toInt()){
                        seek.max = ll
                    }
                    cameraCaptureSession.stopRepeating()
                    cameraDevice.close()
                    id = cameraManager.cameraIdList[cid]
                } catch (e: Exception) {
                    // handler
                }
                open_camera()
            // write custom code for progress is changed
            }

0 ответов

Другие вопросы по тегам