Mit der CameraX-API von Google können Apps die besten Standardkamerafunktionen nutzen

Die CameraX-Vendor-Extensions-API von Google ermöglicht es Kamera-Apps von Drittanbietern, einige der besten Funktionen der Standard-Kamera-App zu nutzen.

Im Internet kursiert der Witz, dass man daran erkennen kann, ob jemand ein Android-Telefon verwendet schlechte Qualität ihrer Selfies. Während die Memes definitiv ziemlich übertreiben, steckt leider ein bisschen Wahrheit dahinter. Zumindest auf dem Papier waren Android-Telefone in Bezug auf die Kameraleistung in der Regel den iPhones voraus. OEMs wie LG und Samsung neigen dazu, Kameras mit mehr Pixeln und größeren Blendenöffnungen zu verwenden als konkurrierende iPhones. Technische Daten sind jedoch nicht alles. Ein Grund dafür, dass Apple im Kameraspiel mithalten kann, liegt an der iOS-Software. Alle OEMs, von Apple bis ZTE, nutzen Software-Magie, um Fotos und Videos besser aussehen zu lassen. Die Unternehmen verwenden Algorithmen, um Rauschen zu reduzieren, Farbsättigung und Kontrast zu optimieren und sogar dunkle Szenen aufzuhellen, um das Endergebnis ansprechender zu gestalten. Dies ist historisch gesehen der Punkt, an dem Android-OEMs hinter Apple zurückgeblieben sind.

Softwareentwicklungen

In jüngerer Zeit haben sich die Dinge jedoch zu ändern begonnen. Das größte Beispiel für diese Änderung ist wahrscheinlich Google und die Pixel-Reihe. Was die Hardware betrifft, können die Pixel-Kameras wirklich nicht mit anderen Flaggschiffen mithalten. Bei der Software macht Google jedoch den Unterschied aus. Mit Funktionen wie Porträtmodus, Nachtsicht, HDR+ und Super-Resolution-Zoom haben sich die Pixel den Ruf erworben, einige davon zu bieten beste Smartphone-Kameras auf dem Markt.

Andere Android-OEMs folgen dem Beispiel von Google. Samsung, OPPO, Xiaomi, Vivo, OnePlus usw. haben alle ihre eigenen Versionen der beliebtesten Kamerafunktionen des Pixels eingeführt und verfügen sogar über einige eigene einzigartige Funktionen. Mit Schlagworten wie „KI“ und „maschinelles Lernen“ versuchen Android-OEMs, Sie davon zu überzeugen, dass ihre Software die Software ist, mit der Sie Ihre Fotos und Videos verbessern möchten. Wir sind an einem Punkt angelangt, an dem Android-Telefone in allen Aspekten der Kameraleistung wirklich mit iPhones konkurrieren können.

Das Problem

Leider gibt es immer noch eine große Ausnahme: Apps von Drittanbietern. Ihr Super-Flaggschiff mit 50 Kameras macht vielleicht mit der integrierten Kamera-App tolle Fotos, aber wechseln Sie zu Instagram, Snapchat oder sogar eine Kamera-App eines Drittanbieters, und es ist im Grunde eine Garantie dafür, dass das, was Sie aufnehmen, nicht annähernd so aussieht Gut. Als ob das nicht genug wäre, entgehen Ihnen auch alle coolen Kamerafunktionen und -modi. Dies liegt daran, dass Android im Gegensatz zu iOS nicht wirklich über ein einheitliches Kamera-Framework verfügt. Klar, die Grundfunktionen sind vorhanden. Eine Drittanbieter-App kann weiterhin Fotos und Videos aufnehmen und den Blitz verwenden. Aber was passiert, wenn Ihr Telefon über einen sekundären Sensor für Weitwinkel oder Tele verfügt? Es ist möglich, dass Entwickler auf diesen zweiten Sensor zugreifen können, die von ihnen verwendete Methode muss jedoch spezifisch für Ihr Gerät sein.

Angenommen, Sie haben ein LG V40 (ich weiß, ich weiß, stellen Sie sich vor, Sie hätten eins). Der V40 verfügt über drei Sensoren: Standard, Tele und Ultraweitwinkel. Mit der integrierten Kamera-App kann problemlos zwischen all diesen verschiedenen Sensoren gewechselt werden. Aber vergessen Sie die Verwendung des Ultrawide-Sensors auf Instagram. Nun könnte Instagram einen Blick darauf werfen, wie die Kamera-App von LG die verschiedenen Sensoren nutzt, und eine Möglichkeit entwickeln, mit der Benutzer Weitwinkel- oder Zoomaufnahmen machen können. Aber das würde wahrscheinlich nur auf dem LG V40 funktionieren. Obwohl das Galaxy S10 über die gleichen drei Sensormodi (Standard, Tele und Ultraweitwinkel) verfügt, müsste das Instagram-Team für Samsung eine andere Methode entwickeln.

Fügen Sie nun Huawei, Vivo, OnePlus, Xiaomi, OPPO, Nokia, ZTE, HTC und jede andere Marke hinzu, die Ihnen einfällt. Wie Sie sich vorstellen können, wäre es unglaublich mühsam, eine Methode zu entwickeln, um nur auf die potenziellen zusätzlichen Sensoren für jedes Telefon jeder Marke zuzugreifen. Und dann müssen Sie die Kompatibilität mit allen aktuellen und neuen Telefonen aufrechterhalten.

Diese Einschränkungen gelten auch für Kamerafunktionen. Dinge wie Porträtmodus, Nachtsicht und HDR+ erfordern entweder spezifische gerätespezifische Methoden oder sind für Apps von Drittanbietern völlig unzugänglich.

Für eine App wie Instagram ist das natürlich keine allzu große Sache. Es ist nicht ihr Fokus, und Sie können jederzeit die Kamera-App Ihres Telefons verwenden, um zuerst die Aufnahme zu machen. Aber was ist mit dedizierten Kamera-Apps?

Die Effekte

Öffnen Sie den Google Play Store und suchen Sie nach „Kamera“. Sie werden Hunderte von Ergebnissen finden. Trotz der Verbesserungen bei der Kamerasoftware von Erstanbietern erfreuen sich Kamera-Apps von Drittanbietern immer noch großer Beliebtheit. Einige zielen darauf ab, mehr technische Funktionen wie manuelle Belichtung und Fokus bereitzustellen (Funktionen, die die Kamera-App Ihres Telefons möglicherweise nicht bietet). Andere zielen darauf ab, eine einheitliche Benutzeroberfläche auf allen Ihren Geräten bereitzustellen.

Insbesondere aus dem letztgenannten Grund kann die Kamerafragmentierung von Android die Entwicklung und Wartung einer weitgehend kompatiblen Kamera-App enorm erschweren. Wenn Sie zusätzliche Funktionen bereitstellen möchten, wie können Sie dann alle potenziellen Funktionen aller potenziellen Erstanbieter-Apps einbeziehen? Wenn Sie auf der Suche nach einem konsistenten Erlebnis sind, wie können Sie dann realistischerweise garantieren, dass der Zugriff auf den Weitwinkelsensor auf jedem Gerät, das damit ausgestattet ist, funktioniert?

Die Antwort lautet: Das geht nicht. Sie können versuchen, so viele Funktionen wie möglich auf so vielen Geräten zu unterstützen, aber am Ende wird es eine Menge Arbeit für relativ wenig Lohn sein. Es ist nicht schwer, sich vorzustellen, dass zumindest einige Entwickler einfach aufgegeben haben, eine Kamera-App mit vollem Funktionsumfang für Android zu entwickeln. Tatsächlich haben es mehrere getan.

Die Opfer

Suchen Sie im Play Store nach Kamera-Apps. Ihnen werden einige Dinge auffallen. Erstens gibt es eine viel von Optionen. Zweitens machen die meisten von ihnen ziemlich ähnliche Dinge (Filter nachträglich anwenden und so weiter). Drittens werden die erweiterten Optionen wahrscheinlich nicht so häufig aktualisiert. Möglicherweise finden Sie bei Google sogar Ergebnisse, die nicht mehr im Store verfügbar sind.

Kürzlich haben wir ein ziemlich eindrucksvolles Beispiel dafür bekommen, dass jemand aufgegeben hat. Moment hat beschlossen, die Entwicklung seiner Pro Camera-App für Android einzustellen.

Die Pro Camera-App von Moment zielt darauf ab, erweiterte Foto- und Videofunktionen auf Android zu bringen. Dies sind nur einige dieser Funktionen:

  • RGB-Histogramme
  • Geteilter Fokus
  • Manuelle Steuerung von Belichtung, ISO, Verschlusszeit und Weißabgleich
  • Fokusspitzen
  • RAW-Erfassung
  • Dynamische Bildraten- und Auflösungsänderungen
Screenshots der Moment Pro-Kamera. Über: 9to5Google

Das Problem ist, dass viele dieser Funktionen auf vielen Geräten einfach nicht funktionieren. Ein Blick auf die Funktionskompatibilitätsliste von Moment ist wie ein Blick auf das Bild einer Tanzfläche. Selbst innerhalb derselben Produktlinie ist die Funktionsunterstützung unglaublich fragmentiert. Nach zweijähriger Entwicklungszeit verfügt Moment nicht mehr über die Kapazitäten, die Entwicklung seiner App fortzusetzen.

Grün = unterstützt von Moment Pro Camera. Gelb = vom Gerät unterstützt, aber nicht von meiner Moment Pro-Kamera. Rot = vom Gerät nicht unterstützt. Bildquelle: Moment. Abgerufen über: 9to5Google.

Die Lösung?

Es ist fast 12 Jahre her, dass Android zum ersten Mal veröffentlicht wurde, aber vielleicht haben wir endlich eine Lösung für die Kamerafragmentierung.

Diese Lösung stammt direkt von Google, ist jedoch nicht direkt in Android integriert. Stattdessen ist es ein Jetpack-Unterstützungsbibliothek. Wenn Sie mit der Entwicklung von Android-Apps vertraut sind, sind Sie wahrscheinlich schon auf die Unterstützungsbibliothekspakete AppCompat und AndroidX gestoßen. Diese Bibliotheken von Google sollen es Entwicklern erleichtern, die Abwärtskompatibilität mit älteren Android-Versionen aufrechtzuerhalten und gleichzeitig neue Funktionen und Stile einzuführen.

Eine neuere Ergänzung zu Jetpack ist (sozusagen) die CameraX-Bibliothek. Ähnlich wie bei anderen Jetpack-Bibliotheken besteht das Ziel von CameraX darin, die Kameraentwicklung zu vereinfachen. In seiner einfachsten Form umhüllt CameraX Androids Kamera2, eine API, die es Apps ermöglicht, die Kamerafunktionen auf einem Gerät zu testen, vorausgesetzt, der OEM stellt diese Kamerafunktionen der API zur Verfügung. Benutzer können mithilfe der Camera2 API Probe-Anwendung überprüfen, welche Kamerafunktionen der Camera2-API zur Verfügung gestellt werden, und diese dann mit den in der Standardkameraanwendung verfügbaren Funktionen vergleichen.

Camera2-API-ProbeEntwickler: March Media Lab

Kostenlos.

4.2.

Herunterladen

Der Vorteil der Verwendung von CameraX als Wrapper für die Camera2-API besteht darin, dass es intern alle möglicherweise auftretenden gerätespezifischen Kompatibilitätsprobleme löst. Dies allein wird für Kamera-App-Entwickler nützlich sein, da es den Boilerplate-Code und den Zeitaufwand für die Erforschung von Kameraproblemen reduzieren kann. Das ist jedoch nicht alles, was CameraX kann.

Während dieser erste Teil meist nur für Entwickler interessant ist, gibt es einen weiteren Teil, der sowohl für Entwickler als auch für Endbenutzer gilt: Anbietererweiterungen. Dies ist Googles Antwort auf die Fragmentierung der Kamerafunktionen auf Android. Gerätehersteller können sich dafür entscheiden, Erweiterungsbibliotheken mit ihren Telefonen auszuliefern, die es CameraX (und Entwicklern und Benutzern) ermöglichen, native Kamerafunktionen zu nutzen. Angenommen, Ihnen gefällt der Porträtmodus-Effekt von Samsung wirklich, aber die Kamera-App selbst gefällt Ihnen nicht. Wenn Samsung beschließt, eine CameraX-Porträtmodus-Erweiterung in seinen Telefonen zu implementieren, kann jede Drittanbieter-App, die CameraX verwendet, den Porträtmodus von Samsung verwenden. Offensichtlich ist dies nicht nur auf diese eine Funktion beschränkt. Mit CameraX können Hersteller theoretisch jede ihrer Kamerafunktionen für Apps öffnen.

Leider gibt es einen Vorbehalt, den ich bereits erwähnt habe: Dies ist keine Anforderung für Hersteller. Google sagt Sie unterstützen Erweiterungen auf allen neuen und kommenden Pixel-Geräten, beginnend mit Pixel 4. Sagt OPPO Sie haben ihre Beauty- und HDR-Modi geöffnet. Andere OEMs könnten sich dafür entscheiden, nur ihre Nachtmodi für CameraX verfügbar zu machen, oder sie könnten sich dafür entscheiden, überhaupt keine Erweiterungen zu implementieren. Es liegt ganz beim Hersteller, welches Gerät welche CameraX-Erweiterungen (falls vorhanden) unterstützt. Google Wird verwendet, um eine Liste von Geräten zu verwalten die Anbietererweiterungen unterstützen und welche Kamerafunktionen sie freigeschaltet haben, aber sie haben die Liste in den letzten Monaten nicht aktualisiert. Wir haben uns vor ein paar Wochen an Google gewandt und gefragt, ob sie eine aktualisierte Liste bereitstellen könnten, aber das Unternehmen hat noch nicht mit einer Liste geantwortet. Für das, was es wert ist, a aktueller Google-Blogbeitrag gibt an, dass Geräte von Samsung, LG, OPPO, Xiaomi und Motorola (auf Android 10) eine gewisse Erweiterung bieten Welche Geräte unterstützt werden und welche Funktionen sie haben, wird im Blog-Beitrag jedoch nicht genau angegeben bieten.

Wenn sich genügend Hersteller für die Implementierung von Erweiterungen entscheiden, wird die Kameraszene von Drittanbietern für Android um einiges bunter. Entwickler müssen keine Zeit damit verschwenden, eine Kamerafunktion für jedes mögliche Gerät neu zu implementieren, da das Framework von CameraX sich darum kümmert. Die Funktionsfragmentierung wird geringer sein, da über eine gemeinsame Schnittstelle auf ähnliche Funktionen auf allen Geräten zugegriffen werden kann. Und es gibt noch viele weitere Möglichkeiten.


Dies hängt natürlich alles von der Fähigkeit von Google ab, Hersteller davon zu überzeugen, künftig CameraX Vendor Extension-Bibliotheken zu implementieren. Sofern CameraX nicht umfassend implementiert wird, wird es nur die aktuelle Fragmentierung verstärken. Persönlich bin ich jedoch hoffnungsvoll. Google kann sehr überzeugend sein, wenn es will, und es scheint, als würde viel Arbeit in CameraX gesteckt. Es ist spannend, eine mögliche Lösung für die Kameraprobleme von Android in Sicht zu sehen, und ich freue mich darauf, zu sehen, wie sich CameraX im Laufe der Zeit verbessern und erweitern wird.

Was halten Sie von CameraX? Wird es Google gelingen, ein einheitliches Kameraerlebnis für Android zu schaffen?