es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

No se puede obtener el ID de la cámara física cuando hay varias cámaras en un dispositivo Android.

Estoy utilizando la API de Camera2 en mi aplicación diseñada para el Samsung S21. Este móvil tiene 3 cámaras traseras y una cámara frontal.
Y estoy intentando elegir la cámara física utilizada, pero la función getPhysicalCameraIds() siempre devuelve un array vacío.
¿Existe otra manera de obtener los PhysicalCameraIds o especificar qué cámara utilizar?
¿Alguien puede arrojar algo de luz sobre esto?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Solución para usar la API de la cámara2 en el Samsung S21 con múltiples cámaras

    Es posible que la función getPhysicalCameraIds() no sea compatible con el dispositivo Samsung S21. En tales casos, puede usar la función getCameraIdList() para obtener una lista de identificadores de cámara disponibles y luego usar la clase CameraCharacteristics para determinar qué cámara utilizar.

    Para hacerlo, siga estos pasos:

    1. Obtenga la instancia del administrador de la cámara llamando CameraManager cameraManager = (CameraManager) getSystemService(Context.CAMERA_SERVICE);
    2. Llame a String[] cameraIds = cameraManager.getCameraIdList(); para obtener una lista de identificadores de cámara disponibles.

    3. Itere a través del array cameraIds y para cada identificador, llame a CameraCharacteristics characteristics = cameraManager.getCameraCharacteristics(cameraId); para obtener las características de la cámara.

    4. Verifique las características de la cámara para determinar cuál utilizar. Por ejemplo, puede verificar la característica LENS_FACING para determinar si la cámara es frontal o trasera.

    5. Una vez que haya determinado qué cámara utilizar, abra la cámara llamando cameraManager.openCamera(cameraId, stateCallback, handler); donde cameraId es el identificador de la cámara a abrir.

    6. Luego, puede usar la instancia CameraDevice para iniciar una vista previa, capturar imágenes y realizar otras operaciones relacionadas con la cámara.

    Al utilizar los pasos anteriores, puede omitir la limitación de la función getPhysicalCameraIds() y utilizar con éxito la API de la cámara2 en Samsung S21 con múltiples cámaras.

Comments are closed.