Android Q lisab uue API, et salvestada sisemist heliväljundit teisest rakendusest ja jälgida ka seadme temperatuuri.
Google annab ja Google võtab ära. Iga uus Androidi väljalase tutvustab palju uusi API-sid, mis parandavad olemasolevate rakenduste funktsioone või avavad uusi rakenduste kategooriaid. Teisest küljest eemaldab Google Androidi platvormi turvalisuse parandamiseks ka juurdepääsu olemasolevatele API-dele või piirab nende võimalusi. Android Q väljalase ei erine sellest ja oleme juba palju rääkinud selle muudatustest jagatud salvestusruumi, lõikelauale juurdepääsu, teatiste ja muude API-de osas. Sellel aastal Google I/O arendajate konverentsil teatas Google Android Q uutest API-liidest, mis on kasutajatele ja mobiilimängude arendajatele eriti huvitavad: AudioPlaybackCapture ja Termilised API-d.
Heli salvestamine muudest rakendustest Android Q rakenduse AudioPlaybackCapture abil
Mobiilimängud on tohutu tööstusharu, mille aeglustumist ei ole niipea, eriti sellistel turgudel nagu USA, Hiina ja India. Kuna rohkem inimesi veedab aega oma nutitelefonis mängude ja sotsiaalmeedia jaoks, pole üllatav, et inimesed soovivad oma mängukogemusi veebis jagada.
Android on toetanud ekraanipiltide tegemist põhimõtteliselt algusest peale, kuid ekraanilt videote jäädvustamist on toetatud alles alates Android 5.0 Lollipopist koos MediaProjection API. Kahjuks ei luba see API kolmandate osapoolte rakendustel salvestada teiste rakenduste sisemist heliväljundit, sundides kolmanda osapoole ekraanisalvestiid salvestama välist heliväljundit seadme mikrofonist (s). OEM-id nagu Samsung ja Huawei pakkuda süsteemirakendusi sisemise heliväljundi salvestamiseks ekraani salvestamise ajal, kuid see on ainus viis teiste seadmete omanike jaoks on oma seadmete video- ja heliväljundi nõuetekohaseks salvestamiseks osta a kolmanda osapoole tarvik. Õnneks tutvustab Google lõpuks Android Q-s võimalust, et kolmandate osapoolte rakendused saaksid salvestada heli teistest rakendustest.
Google kirjeldab AudioPlaybackCapture API-t kui ekraanipildi analoogi, kuid heli salvestamiseks. Kuigi seni ainus rakendus, mis API-t kasutab, on Google'i oma Reaalajas subtiitrid, juurdepääsetavuse tööriist, mis lisab tiitrid igale seadmes esitatavale videole, API-le dokumentatsioonis öeldakse, et selle esmane eesmärk on võimaldada voogesitusrakendustel heliolendit jäädvustada mängitakse mängudega. Mõelge mobiilimängijatele, kes voogesitavad oma seansse sellistesse teenustesse nagu Twitch või YouTube. API on loodud nii, et see ei mõjutaks selle rakenduse heli latentsust, mille heli salvestatakse, mistõttu on see ideaalne mängu salvestamiseks, nii et heli ja videot ei sünkroonita.
Erinevalt Androidi algusaegadest on Google'i lähenemine uutele API-dele ettevaatlikum. AudioPlaybackCapture'i saab kasutada ainult siis, kui nii rakendus, mille heli salvestatakse, kui ka jäädvustav rakendus vastavad konkreetsetele nõuetele. Siin on nende nõuete kokkuvõte:
- Selleks, et rakenduse heli jäädvustaks kolmanda osapoole rakendus, peavad olema täidetud järgmised nõuded.
- Rakenduse manifestis peab allowAudioPlaybackCapture olema kas väärtuseks Tõene või määramata. (See on vaikimisi tõene Android Q-d sihtivate rakenduste puhul, kuid selle saab käsitsi seadistada rakenduste jaoks, mis sihivad Android Pie.)
- Heli tootva rakenduse helikasutus peab olema USAGE_MEDIA, USAGE_GAME või USAGE_UNKNOWN.
- Helihõive poliitika (setAllowedCapturePolicy) peab olema seatud väärtusele ALLOW_CAPTURE_BY_ALL. Seda reeglit saab määrata käitusajal, kuid reeglimuudatuse jõustumiseks tuleb taasesitus taaskäivitada. Kui ALLOW_CAPTURE_BY_SYSTEM on määratud, saavad heli salvestada ainult süsteemirakendused (kuid need on piiratud et nad ei saa heli salvestada, edastada seda kolmanda osapoole rakendustele ega salvestada sagedusega > 16 kHz 16-bitist mono kvaliteet.)
- Selleks, et rakendus saaks teisest rakendusest heli salvestada, peavad olema täidetud järgmised nõuded.
- Rakendus peab kuvama MediaProjectionManager.createScreenCaptureIntent viipa ja kasutaja peab sellega nõustuma.
- Rakendus peab hoidma RECORD_AUDIO luba.
- Rakendus peab olema samas kasutajaprofiilis rakendusega, mille heli salvestatakse.
- Rakendus peab kuvama MediaProjectionManager.createScreenCaptureIntent viipa ja kasutaja peab sellega nõustuma.
Ma kujutan ette, et enamik mänge võimaldab seda uut API-t kasutavatel rakendustel oma heli jäädvustada, kuid mängude värskendamine selle toetamiseks võib võtta veidi aega. Teisest küljest ärge oodake, et ükski muusika või video voogesituse rakendus toetaks seda API-d kolmandate osapoolte jaoks litsentsimisega seotud probleemide tõttu. Google'i seatud piirangud juhul, kui rakendus seab helihõivereegliks ALLOW_CAPTURE_BY_SYSTEM, tähendavad aga, et muusika ja video voogesituse rakenduste arendajad peaksid juurdepääsetavuse parandamiseks lubama süsteemis helihõive.
Android Q AudioPlaybackCapture API kohta lisateabe saamiseks vaadake sellel lehel.
Drosselite jälgimine Thermal API abil Android Q-s
Termilist drosselit haldab peaaegu täielikult süsteem, ilma et need rakendused, mida drosselid kõige rohkem mõjutavad, ei saaks ega neile isegi teavitust. Kui seadme ressursid on liiga pingelised, vähendab enamik seadmeid CPU ja GPU kiirust teie mängu jõudluse kahjuks. Mänguarendajana ei saa te sellega midagi teha, välja arvatud kasutaja hoiatamine enne seadete muutmist võimaliku mõju kohta, mida nende muudatused võivad jõudlusele avaldada.
Android Q uue Thermal API-ga saavad rakendused vastu võtta tagasihelistusi jõudluse piiramise eri etappide jaoks – arendajatel on võimalus aidata vähendada seadme koormust, vähendades tegevusi, mis nõuavad märkimisväärset protsessorit, GPU-d või modemit kasutamine. Näiteks võib mäng eraldusvõimet dünaamiliselt vähendada seni, kuni seade enam GPU-d ei piira, või Mapsi rakendus võib keelata täiustatud funktsioonid, nagu liitreaalsusega navigeerimine protsessori koormuse vähendamiseks.
Selle uue API kasutamiseks registreerivad rakendused PowerManageris kuulaja (addThermalStatusListener) ja süsteem saadab rakendusele ühe järgmistest termilise oleku koodidest:
- THERMAL_STATUS_NONE: "Ei ole alla surutud."
- THERMAL_STATUS_LIGHT: "Kerge reguleerimine, kus UX-i ei mõjutata."
- THERMAL_STATUS_MODERATE: "Mõõdukas piiramine, kus UX-i see suuresti ei mõjuta."
- THERMAL_STATUS_SEVERE: "Tõsine pidurdamine, kus UX on suuresti mõjutatud."
- THERMAL_STATUS_CRITICAL: "Platvorm on teinud kõik, et võimsust vähendada."
- THERMAL_STATUS_EMERGENCY: "Platvormi peamised komponendid lülituvad termiliste tingimuste tõttu välja. Seadme funktsioonid on piiratud."
- THERMAL_STATUS_SHUTDOWN: "Vaja kohe välja lülitada.
Thermal API tugi nõuab ilmselgelt Android Q-d, kuid veel üks nõue on uue HAL-i lisamine. Google ütleb, et Pixeli seadmed Android Q-s (tähendab Pixel, Pixel XL, Pixel 2, Pixel 2 XL, Pixel 3, Pixel 3 XL, Pixel 3a, ja Pixel 3a XL) toetavad Thermal API-t, kuid Google tegeleb muude seadmete toe lisamisega.
Loe lähemalt Thermal API siin.