L'API d'extensions du fournisseur CameraX de Google permet aux applications d'appareil photo tierces d'utiliser certaines des meilleures fonctionnalités de l'application d'appareil photo standard.
Il existe une blague de longue date sur Internet selon laquelle on peut savoir si quelqu'un utilise un téléphone Android grâce au mauvaise qualité de leurs selfies. Bien que les mèmes exagèrent certainement un peu, il y a malheureusement une part de vérité derrière eux. Les téléphones Android sont généralement en avance sur les iPhones en termes de performances de l'appareil photo, du moins sur le papier. Les équipementiers comme LG et Samsung ont tendance à utiliser des appareils photo avec plus de pixels et des ouvertures plus grandes que les iPhones concurrents. Cependant, les spécifications ne font pas tout. Une partie de la raison pour laquelle Apple peut rivaliser dans le jeu de l'appareil photo est due au logiciel iOS. Tous les constructeurs OEM, d'Apple à ZTE, utilisent la magie logicielle pour améliorer l'apparence des photos et des vidéos. Les entreprises utilisent des algorithmes pour réduire le bruit, ajuster la saturation et le contraste des couleurs, et même éclaircir les scènes sombres, le tout pour rendre les résultats finaux plus agréables. C’est historiquement là que les OEM Android ont été en deçà d’Apple.
Développements logiciels
Mais plus récemment, les choses ont commencé à changer. Le plus grand exemple de ce changement est probablement Google et la gamme Pixel. En termes de matériel, les caméras Pixel ne peuvent vraiment pas se comparer aux autres produits phares. Cependant, c'est dans les logiciels que Google fait la différence. Avec des fonctionnalités telles que le mode Portrait, Night Sight, HDR+ et Super Res Zoom, les Pixel ont acquis la réputation d'avoir certains des meilleurs meilleurs appareils photo pour smartphone du marché.
D'autres constructeurs OEM Android suivent l'exemple de Google. Samsung, OPPO, Xiaomi, Vivo, OnePlus, etc. ont tous introduit leurs propres versions des fonctionnalités les plus populaires de l'appareil photo du Pixel, et ils possèdent même leurs propres fonctionnalités uniques. Avec des mots à la mode comme « IA » et « apprentissage automatique », les constructeurs OEM Android tentent de vous convaincre que leur logiciel est le logiciel que vous souhaitez améliorer pour vos photos et vidéos. Nous sommes arrivés à un point où les téléphones Android peuvent véritablement rivaliser avec les iPhones dans tous les aspects des performances de l'appareil photo.
Le problème
Malheureusement, il existe encore une exception majeure: les applications tierces. Votre super-duper phare de 50 caméras peut prendre de superbes photos avec l'application appareil photo intégrée, mais passez à Instagram, Snapchat, ou même une application d'appareil photo tierce, et c'est essentiellement une garantie que ce que vous capturez ne sera pas aussi beau. bien. Comme si cela ne suffisait pas, vous perdez également toutes les fonctionnalités et modes intéressants de l’appareil photo. En effet, contrairement à iOS, Android ne dispose pas vraiment d'un cadre de caméra unifié. Bien sûr, les fonctionnalités de base sont là. Une application tierce peut toujours prendre des photos et des vidéos et utiliser le flash. Mais que se passe-t-il si votre téléphone dispose d'un capteur secondaire pour grand angle ou téléobjectif? Il est possible que les développeurs puissent accéder à ce deuxième capteur, mais la méthode qu'ils utiliseront devra être spécifique à votre appareil.
Disons que vous avez un LG V40 (je sais, je sais, imaginez-le). Le V40 dispose de trois capteurs: standard, téléobjectif et ultra-large. L'application caméra intégrée n'a aucun problème à basculer entre tous ces différents capteurs. Mais oubliez d'utiliser le capteur ultra-large sur Instagram. Désormais, Instagram pourrait examiner la manière dont l'application appareil photo de LG utilise les différents capteurs et développer un moyen permettant aux utilisateurs de prendre des photos grand angle ou avec zoom. Mais cela ne fonctionnerait probablement que sur le LG V40. Même si le Galaxy S10 dispose des trois mêmes modes de capteur (standard, téléobjectif et ultra-large), l'équipe d'Instagram devrait développer une autre méthode pour Samsung.
Ajoutez maintenant Huawei, Vivo, OnePlus, Xiaomi, OPPO, Nokia, ZTE, HTC et toute autre marque à laquelle vous pouvez penser. Comme vous pouvez l’imaginer, essayer de développer une méthode permettant d’accéder uniquement aux capteurs supplémentaires potentiels pour chaque téléphone de chaque marque serait incroyablement fastidieux. Et puis vous devez maintenir la compatibilité avec tous les téléphones actuels et nouveaux.
Ces limitations s'appliquent également aux fonctionnalités de l'appareil photo. Des éléments tels que le mode Portrait, Night Sight et HDR+ nécessitent soit des méthodes spécifiques par appareil à utiliser, soit sont complètement inaccessibles aux applications tierces.
Évidemment, pour une application comme Instagram, ce n’est pas très grave. Ce n'est pas leur objectif et vous pouvez toujours utiliser l'application appareil photo de votre téléphone pour prendre la photo en premier. Mais qu’en est-il des applications dédiées à l’appareil photo ?
Les effets
Ouvrez le Google Play Store et recherchez « appareil photo ». Vous allez trouver des centaines de résultats. Même avec les améliorations apportées aux logiciels de caméra propriétaires, les applications de caméra tierces restent très populaires. Certains visent à fournir des fonctionnalités plus techniques telles que l'exposition et la mise au point manuelles (fonctionnalités que l'application appareil photo de votre téléphone n'a peut-être pas). D'autres visent à fournir une UX cohérente sur tous vos appareils.
Surtout pour cette dernière raison, la fragmentation de l'appareil photo d'Android peut rendre incroyablement difficile le développement et la maintenance d'une application d'appareil photo largement compatible. Si vous souhaitez fournir des fonctionnalités supplémentaires, comment allez-vous inclure toutes les fonctionnalités potentielles de toutes les applications propriétaires potentielles? Si vous recherchez une expérience cohérente, comment pouvez-vous garantir de manière réaliste que l'accès au capteur grand angle sur chaque appareil qui en est équipé fonctionnera ?
La réponse est: vous ne pouvez pas. Vous pouvez essayer de prendre en charge autant de fonctionnalités sur autant d'appareils que possible, mais en fin de compte, cela demandera beaucoup de travail pour relativement peu de récompense. Il n'est pas difficile d'imaginer qu'au moins quelques développeurs ont tout simplement renoncé à créer une application d'appareil photo complète pour Android. En fait, plusieurs l’ont fait.
Les victimes
Allez rechercher des applications d’appareil photo sur le Play Store. Vous remarquerez quelques choses. Premièrement, il y a un parcelle d'options. Deuxièmement, la plupart d’entre eux font des choses assez similaires (appliquer des filtres après coup, etc.). Troisièmement, les options les plus avancées ne sont probablement pas mises à jour aussi fréquemment. Vous pouvez même trouver des résultats sur Google qui ne sont plus sur la boutique.
Récemment, nous avons eu un exemple assez important de quelqu'un qui a décidé d'arrêter. Moment a décidé d'arrêter le développement de son application Pro Camera pour Android.
L'application Pro Camera de Moment visait à apporter des fonctionnalités photo et vidéo avancées à Android. Voici quelques-unes de ces fonctionnalités :
- Histogrammes RVB
- Mise au point partagée
- Contrôle manuel de l'exposition, de l'ISO, de la vitesse d'obturation et de la balance des blancs
- Mise au point maximale
- Capture RAW
- Modifications dynamiques du framerate et de la résolution
Le problème est que beaucoup de ces fonctionnalités ne fonctionnent tout simplement pas sur de nombreux appareils. Regarder la liste de compatibilité des fonctionnalités de Moment, c'est comme regarder une photo d'une piste de danse. Même au sein d’une même gamme de produits, la prise en charge des fonctionnalités est incroyablement fragmentée. Après deux ans de développement, Moment n'a plus la capacité de poursuivre le développement de son application.
Vert = pris en charge par la caméra Moment Pro. Jaune = pris en charge par l'appareil mais pas par ma caméra Moment Pro. Rouge = non pris en charge par l'appareil. Source de l'image: Instant. Récupéré via: 9to5Google.
La solution?
Cela fait près de 12 ans depuis la première sortie d'Android, mais nous pourrions enfin avoir une solution à la fragmentation des caméras.
Cette solution vient directement de Google, même si elle n'est pas directement intégrée à Android. Au lieu de cela, c'est un Bibliothèque de support Jetpack. Si vous êtes familier avec le développement d'applications Android, vous avez probablement rencontré les suites de bibliothèques de support AppCompat et AndroidX. Ces bibliothèques de Google visent à permettre aux développeurs de maintenir plus facilement la compatibilité ascendante avec les anciennes versions d'Android, tout en étant en mesure d'introduire de nouvelles fonctionnalités et de nouveaux styles.
Un ajout plus récent à Jetpack (en quelque sorte) est la bibliothèque CameraX. Semblable à d'autres bibliothèques Jetpack, l'objectif de CameraX est de faciliter le développement de caméras. Dans sa forme la plus basique, CameraX englobe Android Caméra2, une API qui permet aux applications de sonder les fonctionnalités de la caméra sur un appareil, à condition que l'OEM expose ces fonctionnalités de la caméra à l'API. Les utilisateurs peuvent vérifier quelles fonctionnalités de la caméra sont exposées à l'API Camera2 à l'aide de l'application Camera2 API Probe, puis les comparer aux fonctionnalités disponibles dans l'application de la caméra standard.
Prix : Gratuit.
4.2.
L'avantage d'utiliser CameraX comme wrapper pour l'API Camera2 est que, en interne, il résout tous les problèmes de compatibilité spécifiques à l'appareil qui peuvent survenir. Cela seul sera utile pour les développeurs d’applications de caméra, car cela peut réduire le code passe-partout et le temps passé à rechercher les problèmes de caméra. Ce n’est cependant pas tout ce que CameraX peut faire.
Bien que cette première partie n'intéresse principalement que les développeurs, il existe une autre partie qui s'applique à la fois aux développeurs et aux utilisateurs finaux: Extensions du fournisseur. C'est la réponse de Google à la fragmentation des fonctionnalités de l'appareil photo sur Android. Les fabricants d'appareils peuvent choisir de fournir des bibliothèques d'extensions avec leurs téléphones qui permettent à CameraX (ainsi qu'aux développeurs et aux utilisateurs) d'exploiter les fonctionnalités natives de l'appareil photo. Par exemple, disons que vous aimez vraiment l'effet Mode Portrait de Samsung, mais que vous n'aimez pas l'application appareil photo elle-même. Si Samsung décide d'implémenter une extension CameraX Portrait Mode dans ses téléphones, toute application tierce utilisant CameraX pourra utiliser le mode Portrait de Samsung. Évidemment, cela ne se limite pas à cette seule fonctionnalité. Les fabricants peuvent théoriquement ouvrir n'importe quelle fonctionnalité de leur appareil photo aux applications utilisant CameraX.
Malheureusement, il y a une mise en garde, que j'ai mentionnée plus tôt: ce n'est pas une obligation pour les fabricants. Google dit ils prendront en charge les extensions sur tous les appareils Pixel nouveaux et à venir, à commencer par le Pixel 4. OPPO dit ils ont ouvert leurs modes Beauté et HDR. D'autres OEM pourraient choisir de rendre uniquement leurs modes nuit disponibles pour CameraX, ou choisir de ne mettre en œuvre aucune extension du tout. Il appartient entièrement au fabricant de déterminer quel appareil prend en charge quelles extensions CameraX (le cas échéant). Google utilisé pour maintenir une liste d'appareils qui prennent en charge les extensions de fournisseur et les fonctionnalités de caméra qu'ils ont ouvertes, mais ils n'ont pas mis à jour la liste au cours des derniers mois. Nous avons contacté Google il y a quelques semaines pour leur demander s'ils pouvaient fournir une liste mise à jour, mais la société n'a pas encore répondu avec une liste. Pour ce que ça vaut, un article récent du blog Google indique que les appareils de Samsung, LG, OPPO, Xiaomi et Motorola (sous Android 10) offrent une certaine extension fonctions, mais le billet de blog ne précise pas exactement quels appareils sont pris en charge ni quelles fonctions ils fournir.
Si suffisamment de fabricants décident d’implémenter des extensions, la scène des caméras tierces d’Android sera bien plus lumineuse. Les développeurs n'auront pas à perdre de temps à réimplémenter une fonctionnalité de caméra pour chaque appareil possible puisque le framework de CameraX s'en chargera. Il y aura moins de fragmentation des fonctionnalités puisque des fonctionnalités similaires sur tous les appareils seront accessibles via une interface commune. Et il existe bien d’autres possibilités.
Bien entendu, tout dépend de la capacité de Google à convaincre les fabricants d’implémenter les bibliothèques CameraX Vendor Extension à l’avenir. À moins que CameraX ne soit largement implémenté, cela ne fera qu’ajouter à la fragmentation actuelle. Mais personnellement, j'ai bon espoir. Google peut être très convaincant quand il le souhaite, et il semble que beaucoup de travail soit consacré à CameraX. C'est passionnant de voir une solution possible aux problèmes de caméra d'Android à l'horizon, et j'ai hâte de voir comment CameraX va s'améliorer et se développer au fil du temps.
Que pensez-vous de CameraX? Google réussira-t-il à créer une expérience de caméra unifiée pour Android ?