Googles CameraX API lader apps bruge de bedste standardkamerafunktioner

click fraud protection

Googles CameraX-leverandørudvidelses-API gør det muligt for tredjeparts kameraapps at bruge nogle af de bedste funktioner i standardkamera-appen.

Der er en langvarig joke på internettet, som du kan se, hvis nogen bruger en Android-telefon dårlig kvalitet af deres selfies. Selvom memerne bestemt overdriver en del, er der desværre en smule sandhed bag dem. Android-telefoner har normalt været foran iPhones med hensyn til kameraydelse, i hvert fald på papiret. OEM'er som LG og Samsung har en tendens til at bruge kameraer med flere pixels og større blænde end konkurrerende iPhones. Specifikationer er dog ikke alt. En del af hvorfor Apple kan konkurrere i kameraspillet er på grund af iOS' software. Alle OEM'er, fra Apple til ZTE, bruger noget softwaremagi til at få fotos og videoer til at se bedre ud. Virksomhederne bruger algoritmer til at reducere støj, justere farvemætning og kontrast og endda lysne mørke scener op, alt sammen for at gøre slutresultaterne mere behagelige. Det er historisk set, hvor Android OEM'er er kommet til kort med Apple.

Softwareudvikling

På det seneste er tingene dog begyndt at ændre sig. Det største eksempel på denne ændring er sandsynligvis Google og Pixel-serien. Med hensyn til hardware kan Pixel-kameraerne virkelig ikke sammenlignes med andre flagskibe. Det er dog software, hvor Google udgør forskellen. Med funktioner som Portrait Mode, Night Sight, HDR+ og Super Res Zoom har Pixels fået ry for at have nogle af de bedste smartphone-kameraer på markedet.

Andre Android OEM'er følger Googles spor. Samsung, OPPO, Xiaomi, Vivo, OnePlus osv. har alle introduceret deres egne versioner af Pixels mere populære kamerafunktioner, og de har endda nogle unikke egenskaber. Med buzzwords som "AI" og "machine learning" forsøger Android OEM'er at overbevise dig om, at deres software er den software, du vil forbedre dine fotos og videoer. Vi er nået til et punkt, hvor Android-telefoner virkelig kan konkurrere mod iPhones i alle aspekter af kameraets ydeevne.

Problemet

Desværre er der stadig en stor undtagelse: tredjepartsapps. Dit super-duper-flagskib med 50 kameraer tager måske fantastiske billeder med den indbyggede kamera-app, men skift til Instagram, Snapchat, eller endda en tredjeparts kamera-app, og det er dybest set en garanti for, at det, du fanger, ikke vil se nær som godt. Som om det ikke var nok, så taber du også på alle de fede kamerafunktioner og -tilstande. Dette skyldes, at Android i modsætning til iOS ikke rigtig har en samlet kameraramme. Selvfølgelig er de grundlæggende funktioner der. En tredjepartsapp kan stadig tage billeder og videoer og bruge blitzen. Men hvad sker der, hvis din telefon har en sekundær sensor til vidvinkel eller tele? Det er muligt, at udviklere vil kunne få adgang til den anden sensor, men den metode, de bruger, skal være specifik for din enhed.

Lad os sige, at du har en LG V40 (jeg ved, jeg ved det, forestil dig, at du gør det). V40 har tre sensorer: standard, telefoto og ultrawide. Den indbyggede kamera-app har ingen problemer med at skifte mellem alle disse forskellige sensorer. Men glem alt om at bruge den ultrabrede sensor på Instagram. Nu kunne Instagram tage et kig på, hvordan LGs kamera-app bruger de forskellige sensorer og udvikle en måde, hvorpå brugerne kan tage vidvinkel- eller zoombilleder. Men det ville nok kun virke på LG V40. Selvom Galaxy S10 har de samme tre sensortilstande (standard, telefoto og ultrawide), ville Instagram-teamet være nødt til at udvikle en anden metode til Samsung.

Tilføj nu Huawei, Vivo, OnePlus, Xiaomi, OPPO, Nokia, ZTE, HTC og hvilket som helst andet mærke, du overhovedet kan tænke på, til blandingen. Som du kan forestille dig, ville det blive utroligt kedeligt at forsøge at udvikle en metode til at få adgang til netop de potentielle ekstra sensorer for hver telefon fra hvert mærke. Og så skal du bevare kompatibiliteten med alle nuværende og nye telefoner.

Disse begrænsninger gælder også for kamerafunktioner. Ting som Portrættilstand, Natsyn og HDR+ har enten brug for specifikke per-enhedsmetoder for at bruge eller er fuldstændig utilgængelige for tredjepartsapps.

Det er klart, at for en app som Instagram, er dette ikke for stor en aftale. Det er ikke deres fokus, og du kan altid bruge telefonens kamera-app til at tage billedet først. Men hvad med dedikerede kamera-apps?

Effekterne

Åbn Google Play Butik, og søg efter "kamera". Du vil finde hundredvis af resultater. Selv med forbedringerne i førsteparts kamerasoftware er tredjeparts kameraapps stadig meget populære. Nogle sigter mod at give mere tekniske funktioner som manuel eksponering og fokus (funktioner, som din telefons kameraapp muligvis ikke har). Andre sigter mod at give en ensartet UX på tværs af dine enheder.

Især af sidstnævnte grund kan Androids kamerafragmentering gøre det utroligt svært at udvikle og vedligeholde en bredt kompatibel kamera-app. Hvis du ønsker at tilbyde ekstra funktioner, hvordan vil du så inkludere alle de potentielle funktioner i alle de potentielle førsteparts-apps? Hvis du leder efter en ensartet oplevelse, hvordan kan du så realistisk garantere, at adgang til vidvinkelsensoren på enhver enhed, der har den, vil fungere?

Svaret er: det kan du ikke. Du kan prøve at understøtte så mange funktioner på så mange enheder som muligt, men i sidste ende vil det være meget arbejde for relativt lidt belønning. Det er ikke svært at forestille sig, at i det mindste nogle få udviklere simpelthen har opgivet at lave en fuldt udstyret kamera-app til Android. Det har flere faktisk.

De Tilskadekomne

Gå og søg efter kameraapps i Play Butik. Du vil bemærke et par ting. En, der er en masse af muligheder. For det andet, de fleste af dem gør ret ens ting (anvend filtre bagefter og sådan). For det tredje bliver de mere avancerede muligheder sandsynligvis ikke opdateret så ofte. Du kan endda finde resultater på Google, som ikke længere er i butikken.

For nylig har vi fået et ret stort eksempel på, at nogen siger op. Moment besluttede at stoppe udviklingen af ​​sin Pro Camera-app til Android.

Moments Pro Camera-app havde til formål at bringe avancerede foto- og videofunktioner til Android. Dette er blot nogle få af disse funktioner:

  • RGB histogrammer
  • Opdel fokus
  • Manuel kontrol over eksponering, ISO, lukkertid, hvidbalance
  • Fokus topper
  • RAW-optagelse
  • Dynamiske billedhastighed og opløsningsændringer
Moment Pro Camera-skærmbilleder. Via: 9to5Google

Problemet er, at mange af disse funktioner simpelthen ikke virker på mange enheder. At se på Moments funktionskompatibilitetsliste er som at se på et billede af et dansegulv. Selv inden for samme produktlinje er funktionssupport utroligt fragmenteret. Efter to års udvikling har Moment ikke længere kapacitet til at fortsætte udviklingen på sin app.

Grøn = understøttet af Moment Pro Camera. Gul = understøttet af enhed, men ikke mit Moment Pro-kamera. Rød = ikke understøttet af enheden. Billedkilde: Moment. Hentet via: 9to5Google.

Løsningen?

Det er næsten 12 år siden, at Android først blev udgivet, men vi har måske endelig en løsning på kamerafragmenteringen.

Denne løsning kommer direkte fra Google, selvom den ikke er indbygget direkte i Android. I stedet er det en Jetpack support bibliotek. Hvis du er fortrolig med at udvikle Android-apps, er du sandsynligvis stødt på AppCompat- og AndroidX-supportbibliotekssuiterne. Disse biblioteker fra Google sigter mod at gøre det lettere for udviklere at opretholde bagudkompatibilitet med ældre Android-versioner, mens de stadig er i stand til at introducere nye funktioner og stilarter.

En nyere tilføjelse til Jetpack (en slags), er CameraX-biblioteket. I lighed med andre Jetpack-biblioteker er CameraX's mål at gøre kameraudvikling lettere. I sin mest basale form omslutter CameraX Android'er Kamera 2, en API, der tillader apps at undersøge kamerafunktionerne på en enhed, forudsat at OEM udsætter disse kamerafunktioner for API'en. Brugere kan kontrollere, hvilke kamerafunktioner der udsættes for Camera2 API ved hjælp af Camera2 API Probe-applikationen og derefter sammenligne det med de funktioner, der er tilgængelige i standardkameraapplikationen.

Camera2 API-sondeUdvikler: March Media Lab

Pris: Gratis.

4.2.

Hent

Fordelen ved at bruge CameraX som en indpakning til Camera2 API er, at den internt løser eventuelle enhedsspecifikke kompatibilitetsproblemer, der måtte opstå. Dette alene vil være nyttigt for kameraapp-udviklere, da det kan reducere standardkode og tid brugt på at undersøge kameraproblemer. Det er dog ikke alt, CameraX kan.

Mens den første del for det meste kun er interessant for udviklere, er der en anden del, der gælder for både udviklere og slutbrugere: Leverandørudvidelser. Dette er Googles svar på kamerafunktionsfragmenteringen på Android. Enhedsproducenter kan vælge at sende udvidelsesbiblioteker med deres telefoner, der gør det muligt for CameraX (og udviklere og brugere) at udnytte native kamerafunktioner. Sig for eksempel, at du virkelig kan lide Samsungs Portrait Mode-effekt, men at du ikke kan lide selve kameraappen. Hvis Samsung beslutter at implementere en CameraX Portrait Mode-udvidelse i sine telefoner, vil enhver tredjepartsapp, der bruger CameraX, kunne bruge Samsungs Portrait Mode. Det er klart, at dette ikke kun er begrænset til den ene funktion. Producenter kan teoretisk åbne alle deres kamerafunktioner for apps, der bruger CameraX.

Desværre er der en advarsel, som jeg nævnte tidligere: dette er ikke et krav for producenter. siger Google de vil understøtte udvidelser på alle nye og kommende Pixel-enheder, startende med Pixel 4. siger OPPO de har åbnet deres Beauty- og HDR-tilstande. Andre OEM'er kunne vælge kun at gøre deres nattilstande tilgængelige for CameraX, eller de kunne vælge ikke at implementere nogen udvidelser overhovedet. Det er helt op til producenten, hvilken enhed der understøtter hvilke CameraX-udvidelser (hvis nogen). Google bruges til at vedligeholde en liste over enheder der understøtter Vendor Extensions og hvilke kamerafunktioner de åbnede op, men de har ikke opdateret listen i de sidste mange måneder. Vi kontaktede Google for et par uger siden og spurgte dem, om de kunne levere en opdateret liste, men virksomheden har endnu ikke svaret med en liste. For hvad det er værd, en seneste Google blogindlæg angiver, at enheder fra Samsung, LG, OPPO, Xiaomi og Motorola (på Android 10) giver en vis udvidelse funktioner, men blogindlægget specificerer ikke præcist hvilke enheder der understøttes eller hvilke funktioner de give.

Hvis nok producenter beslutter sig for at implementere udvidelser, vil Androids tredjeparts kamerascene være meget lysere. Udviklere behøver ikke at spilde tid på at genimplementere en kamerafunktion for hver enhed, de overhovedet kan, da CameraX's ramme vil tage sig af det. Der vil være mindre funktionsfragmentering, da lignende funktioner på tværs af enheder vil være tilgængelige via en fælles grænseflade. Og der er mange flere muligheder.


Selvfølgelig afhænger alt dette af Googles evne til at overbevise producenter om at implementere CameraX Vendor Extension-biblioteker fremover. Medmindre CameraX er bredt implementeret, vil det blot tilføje til den nuværende fragmentering. Personligt er jeg dog håbefuld. Google kan være meget overbevisende, når det vil være det, og det ser ud til, at der ligger meget arbejde i CameraX. Det er spændende at se en mulig løsning på Androids kameraproblemer i horisonten, og jeg glæder mig til at se, hvordan CameraX vil forbedre og udvide sig over tid.

Hvad synes du om CameraX? Vil det lykkes Google at skabe en samlet kameraoplevelse til Android?