Android Q tilføjer en ny API til at optage det interne lydoutput fra en anden app og også for at overvåge enhedens temperatur.
Google giver, og Google tager væk. Hver ny Android-udgivelse introducerer en masse nye API'er, der enten forbedrer funktionaliteten af eksisterende apps eller åbner op for nye kategorier af apps. På den anden side fjerner Google også adgangen til eller begrænser mulighederne for eksisterende API'er for at forbedre sikkerheden på Android-platformen. Android Q-udgivelsen er ikke anderledes, og vi har allerede talt meget om dens ændringer til delt lagerplads, adgang til udklipsholderen, meddelelser og andre API'er. På dette års Google I/O udviklerkonference, Google annoncerede nye API'er i Android Q, der er særligt interessante for brugere og mobilspiludviklere: AudioPlaybackCapture og Termiske API'er.
Optagelse af lyden fra andre apps med AudioPlaybackCapture i Android Q
Mobilspil er en enorm industri uden tegn på at bremse farten snart, især på markeder som USA, Kina og Indien. Med flere mennesker, der bruger tid på deres smartphones til spil og sociale medier, er det ingen overraskelse, at folk ønsker at dele deres spiloplevelser online.
Android har understøttet at tage skærmbilleder siden begyndelsen, men optagelse af videoer af skærmen er kun blevet understøttet siden Android 5.0 Lollipop med introduktionen af MediaProjection API. Desværre tillader denne API ikke tredjepartsapps at optage det interne lydoutput i andre apps, tvinger tredjepartsskærmoptagere til at optage eksternt lydoutput fra enhedens mikrofon (s). OEM'er som Samsung og Huawei give systemapps til at optage det interne lydoutput under en skærmoptagelse, men den eneste måde for ejere af andre enheder til korrekt at optage video- og lydoutput fra deres enheder er at købe -en tredjepartstilbehør. Heldigvis introducerer Google endelig en måde i Android Q for tredjepartsapps at optage lyden fra andre apps.
AudioPlaybackCapture API er beskrevet af Google som analogen til skærmoptagelse, men til lydoptagelse. Selvom den eneste app hidtil, der bruger API'en, er Googles Live billedtekst, et tilgængelighedsværktøj, der tilføjer billedtekster til enhver video, der afspilles på enheden, API'erne dokumentation angiver, at dens primære formål er at tillade streaming-apps at fange lydvæsenet spillet af spil. Tænk, at mobilspillere streamer deres sessioner til tjenester som Twitch eller YouTube. API'en er designet til ikke at påvirke lydforsinkelsen for den app, hvis lyd optages, hvilket gør den perfekt til gameplay-optagelse, så lyd og video ikke bliver desynkroniseret.
I modsætning til i de tidlige dage af Android er Googles tilgang til nye API'er mere forsigtig. AudioPlaybackCapture kan kun bruges, hvis både den app, hvis lyd optages, og den app, der foretager optagelsen, opfylder specifikke krav. Her er en oversigt over disse krav:
- For at en apps lyd kan optages af en tredjepartsapp, skal følgende krav være opfyldt:
- Appen skal have allowAudioPlaybackCapture enten sat til sand eller deaktiveret i deres manifest. (Det er som standard sandt for apps, der er målrettet mod Android Q, men kan indstilles manuelt for apps, der er målrettet mod Android Pie.)
- Den app, der producerer lyd, skal have sit lydforbrug af typen USAGE_MEDIA, USAGE_GAME eller USAGE_UNKNOWN.
- Politikken for lydoptagelse (setAllowedCapturePolicy) skal indstilles til ALLOW_CAPTURE_BY_ALL. Denne politik kan indstilles under kørsel, men afspilningen skal genstartes, for at politikændringen kan træde i kraft. Hvis ALLOW_CAPTURE_BY_SYSTEM er indstillet, er det kun systemapps, der kan optage lyden (men er begrænset i at de ikke kan gemme lyden, sende den til en tredjepartsapp eller optage ved > 16kHz 16-bit mono kvalitet.)
- For at en app kan optage lyd fra en anden app, skal følgende krav være opfyldt:
- Appen skal åbne MediaProjectionManager.createScreenCaptureIntent-prompten, og brugeren skal acceptere den.
- Appen skal indeholde RECORD_AUDIO tilladelse.
- Appen skal være i samme brugerprofil som den app, hvis lyd vil blive optaget.
- Appen skal åbne MediaProjectionManager.createScreenCaptureIntent-prompten, og brugeren skal acceptere den.
Jeg kan forestille mig, at de fleste spil vil tillade, at deres lyd optages af apps, der bruger denne nye API, men det kan tage lidt tid for spil at blive opdateret til at understøtte det. På den anden side skal du ikke forvente, at nogen musik- eller videostreaming-apps understøtter denne API for tredjeparter på grund af problemer med licensering. De begrænsninger, som Google har pålagt, hvis en app indstiller sin politik for lydoptagelse til ALLOW_CAPTURE_BY_SYSTEM, betyder dog, at udviklere af musik- og videostreaming-apps bør være okay med at aktivere lydoptagelse af systemet for at forbedre tilgængeligheden.
For at læse mere om AudioPlaybackCapture API i Android Q, tjek ud denne side.
Overvågning af drosling med termisk API i Android Q
Termisk regulering styres næsten udelukkende af systemet uden input fra eller endda meddelelse til de apps, der er mest påvirket af regulering. Hvis enhedens ressourcer er for anstrengte, vil de fleste enheder drosle CPU- og GPU-hastighederne til skade for dit spils ydeevne. Der er intet, du som spiludvikler virkelig kan gøre ved det, bortset fra at advare brugeren, før de ændrer nogen indstillinger, om den potentielle indflydelse, deres ændringer kan have på ydeevnen.
Med den nye Thermal API i Android Q kan apps dog modtage tilbagekald for forskellige stadier af ydelsesregulering - hvilket giver udviklere mulighed for at hjælpe med at reducere belastningen på enheden ved at skrue ned for aktiviteter, der kræver betydelig CPU, GPU eller modem brug. For eksempel kan et spil dynamisk reducere opløsningen, indtil enheden ikke længere er GPU-drossel, eller en Maps-app kan deaktivere forbedrede funktioner som f.eks. augmented reality navigation for at reducere belastningen på CPU'en.
For at bruge denne nye API registrerer apps en lytter i PowerManager (addThermalStatusListener), og systemet sender en af følgende termiske statuskoder til appen:
- THERMAL_STATUS_NONE: "Ikke under drossel."
- THERMAL_STATUS_LIGHT: "Let drosling, hvor UX ikke er påvirket."
- THERMAL_STATUS_MODERATE: "Moderat drosling, hvor UX ikke er stort påvirket."
- THERMAL_STATUS_SEVERE: "Alvorlig drosling, hvor UX er stort set påvirket."
- THERMAL_STATUS_CRITICAL: "Platformen har gjort alt for at reducere strømmen."
- THERMAL_STATUS_EMERGENCY: "Nøglekomponenter i platformen lukker ned på grund af termisk tilstand. Enhedens funktionaliteter vil være begrænsede."
- THERMAL_STATUS_SHUTDOWN: "Har brug for lukning med det samme.
Understøttelse af Thermal API kræver naturligvis Android Q, men et andet krav er tilføjelsen af en ny HAL. Google siger, at Pixel-enhederne på Android Q (betyder Pixel, Pixel XL, Pixel 2, Pixel 2 XL, Pixel 3, Pixel 3 XL, Pixel 3a, og Pixel 3a XL) understøtter Thermal API, men Google arbejder på at tilføje support til andre enheder.
Læs mere om Termisk API her.