Nota: Esta página hace referencia al paquete Camera2. A menos que tu app requiera funciones específicas de bajo nivel de Camera2, te recomendamos que uses CameraX. CameraX y Camera2 admiten Android 5.0 (nivel de API 21) y versiones posteriores.
Los desarrolladores de cámaras pueden encontrar desafíos únicos cuando trabajan en aplicaciones de cámara que se ejecutan en dispositivos plegables. A diferencia de los smartphones, en los que a menudo son válidas varias suposiciones relacionadas con la orientación de la pantalla, la orientación de la cámara y la orientación, los dispositivos plegables pueden tener diversos factores de forma, diseños de pantalla y combinaciones de cámaras.
Por lo general, los smartphones tienen cámaras con orientación vertical que coinciden con la pantalla. Sin embargo, es posible que esto no sea cierto para ciertos estados plegables. Una pantalla desplegada puede tener un sensor con orientación vertical y otro con orientación horizontal.
Si tu aplicación de cámara usa un SurfaceTexture
o una canalización de renderización personalizada, ten en cuenta la orientación del sensor de la cámara.
Esto garantiza que el contenido renderizado siempre esté físicamente en posición vertical y que los píxeles permanezcan cuadrados, lo que evita el estiramiento en direcciones horizontales o verticales.
En esta guía, se proporciona información sobre lo que los desarrolladores de Camera2 deben tener en cuenta y los pasos para ajustar la renderización de la vista previa de la cámara para diferentes estados de dispositivos plegables.
Cómo afectan los interruptores de estado del dispositivo a las cámaras
Los dispositivos plegables pueden incluir lo siguiente:
- Dos o más pantallas físicas
- Varios dispositivos de cámara física
Estos dispositivos pueden activarse según el estado del dispositivo. Para simplificar el manejo del estado del dispositivo, algunos dispositivos implementan una cámara lógica que consta de dos o más sensores físicos.
Si los desarrolladores abren y habilitan la transmisión de vista previa en un dispositivo de cámara lógico, la cámara cambia automáticamente entre dispositivos físicos en respuesta a estados de plegado específicos.
Por ejemplo, considera un dispositivo plegable con dos pantallas:
- Una pantalla vertical normal en estado plegado con una cámara frontal física "externa" en orientación vertical.
- Una pantalla plegable habilitada en estado desplegado con una cámara física frontal "interna" con orientación horizontal en relación con la pantalla desplegada.
Cuando el usuario pliega o despliega el dispositivo mientras una aplicación transmite desde la cámara lógica frontal, la implementación del dispositivo puede cambiar entre los sensores físicos internos y externos en respuesta a cada cambio de estado del dispositivo.
Es posible que el interruptor de pantalla requiera que la aplicación ajuste su IU.
Además de los ajustes de la IU, es posible que los desarrolladores deban considerar ajustar la forma en que se renderiza la vista previa de la cámara en relación con la cámara física activa.
Interruptores físicos del dispositivo de la cámara
La interfaz del dispositivo de cámara lógica proporciona las APIs necesarias para controlar los interruptores de la cámara física. Los desarrolladores deben supervisar el valor del ID físico activo.
En los dispositivos plegables, el resultado activo de la captura de ID físico puede cambiar en respuesta a diferentes interruptores de estado plegables, como el plegado y el despliegue.
En esos casos, los desarrolladores deben usar el ID físico activo actual y verificar las características de la cámara correspondientes.
Las dos características más importantes de la cámara que pueden cambiar y afectar la renderización de la vista previa son la orientación del sensor y la orientación del lente.
Si la canalización de renderización de vista previa de tu aplicación depende de parámetros de cámara estáticos para calcular su matriz de transformación final, asegúrate de pasar los valores actuales y actualizar las transformaciones gráficas.
Para comprender mejor las canalizaciones de vista previa de la cámara y cómo se calculan las transformaciones, consulta la guía de vista previa de la cámara.
Suposiciones no válidas adicionales
No se recomienda almacenar en caché los valores de las características de la cámara.
No puedes suponer que las características de la cámara permanecerán constantes, ya que estas pueden cambiar cuando el dispositivo está plegado o desplegado. Por ese motivo, no debes almacenar ni volver a usar las características de la cámara. En su lugar, verifica las características de la cámara cada vez.
Considera el caso en el que se inicia una aplicación de cámara en la pantalla frontal externa y se almacenan en caché las características actuales de la cámara frontal y posterior. Si la aplicación se reinicia en la pantalla interior, es posible que el sensor físico frontal activo tenga una orientación diferente, lo que podría activar efectos secundarios no deseados de renderización de vista previa.