La API de extensiones de proveedor CameraX de Google hace posible que aplicaciones de cámara de terceros utilicen algunas de las mejores funciones de la aplicación de cámara estándar.
Hay un viejo chiste en Internet que dice que puedes saber si alguien está usando un teléfono Android por el mala calidad de sus selfies. Si bien los memes definitivamente exageran bastante, desafortunadamente hay un poco de verdad detrás de ellos. Los teléfonos Android generalmente han estado por delante de los iPhone en términos de rendimiento de la cámara, al menos en papel. Los fabricantes de equipos originales como LG y Samsung tienden a utilizar cámaras con más píxeles y aperturas más grandes que los iPhone de la competencia. Sin embargo, las especificaciones no lo son todo. Parte de la razón por la que Apple puede competir en el juego de las cámaras es por el software de iOS. Todos los fabricantes de equipos originales, desde Apple hasta ZTE, utilizan algo de magia de software para hacer que las fotos y los vídeos se vean mejor. Las empresas utilizan algoritmos para reducir el ruido, ajustar la saturación y el contraste del color e incluso iluminar escenas oscuras, todo para que los resultados finales sean más agradables. Aquí es, históricamente, donde los OEM de Android no han alcanzado a Apple.
Desarrollos de software
Sin embargo, más recientemente las cosas han comenzado a cambiar. El mayor ejemplo de este cambio es probablemente Google y la línea Pixel. En términos de hardware, las cámaras Pixel realmente no se pueden comparar con otros buques insignia. Sin embargo, es en el software donde Google marca la diferencia. Con funciones como Modo Retrato, Visión Nocturna, HDR+ y Super Res Zoom, los Pixel se han ganado la reputación de tener algunas de las Las mejores cámaras para smartphones del mercado..
Otros OEM de Android están siguiendo el ejemplo de Google. Samsung, OPPO, Xiaomi, Vivo, OnePlus, etc. han introducido sus propias versiones de las funciones de cámara más populares del Pixel, e incluso tienen algunas características únicas propias. Con palabras de moda como "IA" y "aprendizaje automático", los OEM de Android intentan convencerlo de que su software es el software que usted desea para mejorar sus fotos y videos. Hemos llegado a un punto en el que los teléfonos Android pueden competir genuinamente con los iPhone en todos los aspectos del rendimiento de la cámara.
El problema
Desafortunadamente, todavía hay una excepción importante: las aplicaciones de terceros. Su súper modelo insignia de 50 cámaras puede tomar fotos increíbles con la aplicación de cámara incorporada, pero cambie a Instagram, Snapchat, o incluso una aplicación de cámara de terceros, y es básicamente una garantía de que lo que captures no se verá tan bien. Como si eso no fuera suficiente, también pierdes todas las funciones y modos interesantes de la cámara. Esto se debe a que, a diferencia de iOS, Android realmente no tiene un marco de cámara unificado. Claro, las funciones básicas están ahí. Una aplicación de terceros aún puede tomar fotografías y videos y usar el flash. Pero, ¿qué pasa si tu teléfono tiene un sensor secundario para gran angular o teleobjetivo? Es posible que los desarrolladores puedan acceder a ese segundo sensor, pero el método que utilicen tendrá que ser específico para su dispositivo.
Digamos que tienes un LG V40 (lo sé, lo sé, imagínate que lo tienes). El V40 tiene tres sensores: estándar, teleobjetivo y ultraancho. La aplicación de cámara incorporada no tiene problemas para cambiar entre todos estos sensores diferentes. Pero olvídate de usar el sensor ultraancho en Instagram. Ahora, Instagram podría echar un vistazo a cómo la aplicación de cámara de LG utiliza los diferentes sensores y desarrollar una forma para que los usuarios tomen fotografías con gran angular o zoom. Pero eso probablemente sólo funcionaría en el LG V40. Aunque el Galaxy S10 tiene los mismos tres modos de sensor (estándar, teleobjetivo y ultraancho), el equipo de Instagram tendría que desarrollar otro método para Samsung.
Ahora agregue a la mezcla Huawei, Vivo, OnePlus, Xiaomi, OPPO, Nokia, ZTE, HTC y cualquier otra marca que se le ocurra. Como puedes imaginar, intentar desarrollar un método para acceder sólo a los posibles sensores adicionales para cada teléfono de cada marca sería increíblemente tedioso. Y luego hay que mantener la compatibilidad con todos los teléfonos actuales y nuevos.
Estas limitaciones también se aplican a las funciones de la cámara. Cosas como el modo retrato, visión nocturna y HDR+ necesitan métodos específicos para su uso por dispositivo o son completamente inaccesibles para aplicaciones de terceros.
Obviamente, para una aplicación como Instagram, esto no es gran cosa. No es su enfoque y siempre puedes usar la aplicación de cámara de tu teléfono para tomar la foto primero. Pero ¿qué pasa con las aplicaciones de cámara dedicadas?
Los efectos
Abre Google Play Store y busca "cámara". Vas a encontrar cientos de resultados. Incluso con las mejoras en el software de cámara propio, las aplicaciones de cámara de terceros siguen siendo muy populares. Algunos tienen como objetivo proporcionar funciones más técnicas como exposición y enfoque manuales (funciones que la aplicación de cámara de su teléfono puede no tener). Otros tienen como objetivo proporcionar una UX consistente en todos sus dispositivos.
Especialmente por esta última razón, la fragmentación de la cámara de Android puede hacer que sea increíblemente difícil desarrollar y mantener una aplicación de cámara ampliamente compatible. Si está buscando proporcionar funciones adicionales, ¿cómo va a incluir todas las funciones potenciales de todas las posibles aplicaciones propias? Si está buscando una experiencia consistente, ¿cómo puede garantizar de manera realista que funcionará el acceso al sensor gran angular en todos los dispositivos que lo tengan?
La respuesta es: no puedes. Puede intentar admitir tantas funciones en tantos dispositivos como sea posible, pero al final, será mucho trabajo por una recompensa relativamente pequeña. No es difícil imaginar que al menos algunos desarrolladores simplemente hayan renunciado a crear una aplicación de cámara con todas las funciones para Android. De hecho, varios lo han hecho.
Las bajas
Haz una búsqueda de aplicaciones de cámara en Play Store. Notarás algunas cosas. Uno, hay un lote de opciones. Dos, la mayoría de ellos hacen cosas bastante similares (aplicar filtros a posteriori y demás). Tres, las opciones más avanzadas probablemente no se actualicen con tanta frecuencia. Incluso puedes encontrar resultados en Google que ya no están en la tienda.
Recientemente, hemos recibido un ejemplo bastante importante de alguien que renunció. Moment decidió dejar de desarrollar su aplicación Pro Camera para Android.
La aplicación Pro Camera de Moment tenía como objetivo llevar funciones avanzadas de fotografía y video a Android. Estas son sólo algunas de esas características:
- Histogramas RGB
- Enfoque dividido
- Control manual de exposición, ISO, velocidad de obturación, balance de blancos
- Enfoque máximo
- captura RAW
- Cambios dinámicos de velocidad de fotogramas y resolución.
El problema es que muchas de estas funciones simplemente no funcionan en muchos dispositivos. Mirar la lista de compatibilidad de funciones de Moment es como mirar la imagen de una pista de baile. Incluso dentro de la misma línea de productos, el soporte de funciones está increíblemente fragmentado. Después de dos años de desarrollo, Moment ya no tiene la capacidad de continuar con el desarrollo de su aplicación.
Verde = compatible con la cámara Moment Pro. Amarillo = compatible con el dispositivo pero no con mi cámara Moment Pro. Rojo = no compatible con el dispositivo. Fuente de la imagen: Momento. Recuperado vía: 9to5Google.
¿La solución?
Han pasado casi 12 años desde que se lanzó Android por primera vez, pero es posible que finalmente tengamos una solución para la fragmentación de la cámara.
Esta solución proviene directamente de Google, aunque no está integrada directamente en Android. En cambio, es un Biblioteca de soporte Jetpack. Si está familiarizado con el desarrollo de aplicaciones de Android, probablemente se haya encontrado con las bibliotecas de soporte AppCompat y AndroidX. Estas bibliotecas de Google tienen como objetivo facilitar a los desarrolladores mantener la compatibilidad con versiones anteriores de Android, al mismo tiempo que pueden introducir nuevas funciones y estilos.
Una incorporación más reciente a Jetpack (más o menos) es la biblioteca CameraX. Al igual que otras bibliotecas Jetpack, el objetivo de CameraX es facilitar el desarrollo de cámaras. En su forma más básica, CameraX envuelve Android Cámara2, una API que permite a las aplicaciones probar las funciones de la cámara en un dispositivo, siempre que el OEM exponga esas funciones de la cámara a la API. Los usuarios pueden comprobar qué funciones de la cámara están expuestas a la API de Camera2 utilizando la aplicación Camera2 API Probe y luego compararlas con las funciones disponibles en la aplicación de cámara estándar.
Precio: Gratis.
4.2.
El beneficio de utilizar CameraX como contenedor para la API de Camera2 es que, internamente, resuelve cualquier problema de compatibilidad específico del dispositivo que pueda surgir. Esto por sí solo será útil para los desarrolladores de aplicaciones de cámara, ya que puede reducir el código repetitivo y el tiempo dedicado a investigar problemas de la cámara. Sin embargo, eso no es todo lo que CameraX puede hacer.
Si bien la primera parte solo es interesante para los desarrolladores, hay otra parte que se aplica tanto a los desarrolladores como a los usuarios finales: Extensiones de proveedores. Esta es la respuesta de Google a la fragmentación de las funciones de la cámara en Android. Los fabricantes de dispositivos pueden optar por incluir bibliotecas de extensiones con sus teléfonos que permitan a CameraX (y a los desarrolladores y usuarios) aprovechar las funciones nativas de la cámara. Por ejemplo, digamos que te gusta mucho el efecto Modo retrato de Samsung, pero no te gusta la aplicación de la cámara en sí. Si Samsung decide implementar una extensión del modo retrato CameraX en sus teléfonos, cualquier aplicación de terceros que use CameraX podrá usar el modo retrato de Samsung. Obviamente, esto no se limita sólo a esa característica. En teoría, los fabricantes pueden abrir cualquiera de las funciones de su cámara a aplicaciones que utilicen CameraX.
Desafortunadamente, hay una advertencia que mencioné anteriormente: esto no es un requisito para los fabricantes. Google dice admitirán Extensiones en todos los dispositivos Pixel nuevos y futuros, comenzando con el Pixel 4. OPPO dice Han abierto sus modos Belleza y HDR. Otros fabricantes de equipos originales podrían optar por poner solo sus modos nocturnos a disposición de CameraX, o podrían optar por no implementar ninguna extensión. Depende completamente del fabricante qué dispositivo admite qué extensiones de CameraX (si corresponde). Google Se utiliza para mantener una lista de dispositivos. que admiten Vendor Extensions y qué funciones de cámara abrieron, pero no han actualizado la lista durante los últimos meses. Nos comunicamos con Google hace unas semanas para preguntarles si podían proporcionar una lista actualizada, pero la compañía aún no ha respondido con una lista. Por lo que vale, un publicación reciente del blog de Google afirma que los dispositivos de Samsung, LG, OPPO, Xiaomi y Motorola (en Android 10) proporcionan alguna extensión funciones, pero la publicación del blog no especifica exactamente qué dispositivos son compatibles o qué funciones proporcionar.
Si suficientes fabricantes deciden implementar extensiones, la escena de las cámaras de terceros de Android será mucho más brillante. Los desarrolladores no tendrán que perder tiempo reimplementando una función de cámara para cada dispositivo posible, ya que el marco de CameraX se encargará de ello. Habrá menos fragmentación de funciones, ya que se podrá acceder a funciones similares en todos los dispositivos a través de una interfaz común. Y hay muchas más posibilidades.
Por supuesto, todo esto depende de la capacidad de Google para convencer a los fabricantes de que implementen las bibliotecas CameraX Vendor Extension en el futuro. A menos que CameraX se implemente ampliamente, solo aumentará la fragmentación actual. Personalmente, sin embargo, tengo esperanzas. Google puede ser muy convincente cuando quiere y parece que se está trabajando mucho en CameraX. Es emocionante ver una posible solución a los problemas de la cámara de Android en el horizonte y espero ver cómo CameraX mejorará y se expandirá con el tiempo.
¿Qué opinas sobre CameraX? ¿Google logrará crear una experiencia de cámara unificada para Android?