Android Q doda nov API za snemanje notranjega zvočnega izhoda iz druge aplikacije in tudi za spremljanje temperature naprave.
Google daje in Google vzame. Vsaka nova izdaja Androida uvaja veliko novih API-jev, ki bodisi izboljšajo funkcionalnost obstoječih aplikacij bodisi odprejo nove kategorije aplikacij. Po drugi strani pa Google prav tako odstrani dostop ali omeji zmogljivosti obstoječih API-jev, da bi izboljšal varnost platforme Android. Izdaja Android Q ni nič drugačna in veliko smo že govorili o njenih spremembah v skupnem pomnilniku, dostopu do odložišča, obvestilih in drugih API-jih. Na letošnjem Na konferenci za razvijalce Google I/O je Google napovedal nove API-je v sistemu Android Q, ki so še posebej zanimivi za uporabnike in razvijalce mobilnih iger: AudioPlaybackCapture in Toplotni API-ji.
Snemanje zvoka iz drugih aplikacij z AudioPlaybackCapture v sistemu Android Q
Mobilne igre so ogromna industrija, ki ne kaže, da bi se kmalu upočasnila, zlasti na trgih, kot so ZDA, Kitajska in Indija. Ker vse več ljudi preživlja čas na svojih pametnih telefonih za igranje iger in družabnih omrežij, ni presenetljivo, da želijo ljudje deliti svoje igralne izkušnje na spletu.
Android podpira snemanje posnetkov zaslona že od samega začetka, zajemanje videoposnetkov zaslona pa je podprto šele od Androida 5.0 Lollipop z uvedbo MediaProjection API. Na žalost ta API aplikacijam tretjih oseb ne dovoljuje snemanja notranjega zvočnega izhoda v drugih aplikacijah, prisiljevanje snemalnikov zaslona tretjih oseb, da snemajo zunanji zvočni izhod iz mikrofona naprave (s). Proizvajalci originalne opreme, kot sta Samsung in Huawei zagotoviti sistemske aplikacije za snemanje notranjega zvočnega izhoda med snemanjem zaslona, vendar edini način za lastnike drugih naprav za pravilno snemanje videa in zvoka iz svojih naprav je nakup a dodatki tretjih oseb. Na srečo Google končno uvaja način v sistemu Android Q za aplikacije drugih proizvajalcev za snemanje zvoka iz drugih aplikacij.
API AudioPlaybackCapture Google opisuje kot analog zajem zaslona, vendar za snemanje zvoka. Čeprav je edina aplikacija, ki doslej uporablja API, Googlova Live Caption, orodje za ljudi s posebnimi potrebami, ki doda napise vsakemu videu, ki se predvaja v napravi, API-ji dokumentacija navaja, da je njen primarni namen omogočiti pretočnim aplikacijam za zajem zvočnega bitja igrajo igre. Pomislite na mobilne igralce, ki svoje seje pretakajo v storitve, kot sta Twitch ali YouTube. API je zasnovan tako, da ne vpliva na zakasnitev zvoka aplikacije, katere zvok se zajema, zaradi česar je popoln za snemanje igranja, tako da se zvok in video ne desinhronizirata.
Za razliko od zgodnjih dni Androida je Googlov pristop do novih API-jev bolj previden. AudioPlaybackCapture je mogoče uporabiti le, če aplikacija, katere zvok se zajema, in aplikacija, ki zajema, izpolnjujeta posebne zahteve. Tukaj je povzetek teh zahtev:
- Da lahko zvok aplikacije zajame aplikacija drugega proizvajalca, morajo biti izpolnjene naslednje zahteve:
- Aplikacija mora imeti možnost allowAudioPlaybackCapture nastavljeno na true ali nenastavljeno v manifestu. (Privzeto je true za aplikacije, ki ciljajo na Android Q, vendar ga je mogoče ročno nastaviti za aplikacije, ki ciljajo na Android Pie.)
- Aplikacija, ki proizvaja zvok, mora imeti uporabo zvoka vrste USAGE_MEDIA, USAGE_GAME ali USAGE_UNKNOWN.
- Pravilnik za zajem zvoka (setAllowedCapturePolicy) mora biti nastavljen na ALLOW_CAPTURE_BY_ALL. Ta pravilnik je mogoče nastaviti med izvajanjem, vendar je treba predvajanje znova zagnati, da sprememba pravilnika začne veljati. Če je nastavljen ALLOW_CAPTURE_BY_SYSTEM, lahko samo sistemske aplikacije snemajo zvok (vendar so omejene v da ne morejo shraniti zvoka, ga posredovati aplikaciji tretje osebe ali snemati pri > 16kHz 16-bitni mono kakovost.)
- Da aplikacija snema zvok iz druge aplikacije, morajo biti izpolnjene naslednje zahteve:
- Aplikacija mora prikazati poziv MediaProjectionManager.createScreenCaptureIntent in uporabnik ga mora sprejeti.
- Aplikacija mora imeti RECORD_AUDIO dovoljenje.
- Aplikacija mora biti v istem uporabniškem profilu kot aplikacija, katere zvok bo posnet.
- Aplikacija mora prikazati poziv MediaProjectionManager.createScreenCaptureIntent in uporabnik ga mora sprejeti.
Predvidevam, da bo večina iger dovolila, da njihov zvok zajamejo aplikacije, ki uporabljajo ta novi API, vendar bo morda trajalo nekaj časa, da bodo igre posodobljene za podporo. Po drugi strani pa ne pričakujte, da bodo aplikacije za pretakanje glasbe ali videa podpirale ta API za tretje osebe zaradi težav z licenciranjem. Vendar pa omejitve, ki jih je uvedel Google, če aplikacija nastavi svoj pravilnik za zajem zvoka na ALLOW_CAPTURE_BY_SYSTEM, pomenijo, da razvijalci aplikacij za pretakanje glasbe in videa bi se morali strinjati z omogočanjem zajema zvoka s sistemom za izboljšanje dostopnosti.
Če želite prebrati več o API-ju AudioPlaybackCapture v sistemu Android Q, si oglejte tej strani.
Spremljanje dušenja s toplotnim API-jem v sistemu Android Q
Toplotno dušenje skoraj v celoti upravlja sistem brez vnosa ali celo obvestila aplikacijam, na katere dušenje najbolj vpliva. Če so viri naprave preveč obremenjeni, bo večina naprav zmanjšala hitrost procesorja in grafičnega procesorja na škodo zmogljivosti vaše igre. Vi kot razvijalec iger ne morete storiti ničesar, razen da uporabnika, preden spremeni nastavitve, opozorite na morebitni vpliv, ki ga imajo njihove spremembe na delovanje.
Z novim Thermal API v sistemu Android Q pa lahko aplikacije prejmejo povratne klice za različne stopnje dušenja zmogljivosti – kar razvijalci priložnost, da pomagajo zmanjšati obremenitev naprave z zmanjšanjem aktivnosti, ki zahtevajo veliko CPE, GPE ali modem uporaba. Na primer, igra lahko dinamično zmanjša ločljivost, dokler naprava ne preneha več dušiti GPE, ali pa lahko aplikacija Zemljevidi onemogoči izboljšane funkcije, kot so navigacija z razširjeno resničnostjo za zmanjšanje obremenitve procesorja.
Za uporabo tega novega API-ja aplikacije registrirajo poslušalca v PowerManagerju (addThermalStatusListener) in sistem aplikaciji pošlje eno od naslednjih kod termičnega stanja:
- THERMAL_STATUS_NONE: "Ni pod dušenjem."
- THERMAL_STATUS_LIGHT: "Dušenje svetlobe, kjer UX ni prizadet."
- THERMAL_STATUS_MODERATE: "Zmerno dušenje, kjer UX ni v veliki meri prizadet."
- THERMAL_STATUS_SEVERE: "Hudo dušenje, kjer je UX v veliki meri prizadet."
- THERMAL_STATUS_CRITICAL: "Platforma je naredila vse, da zmanjša moč."
- THERMAL_STATUS_EMERGENCY: "Ključne komponente v platformi se zapirajo zaradi temperaturnih razmer. Funkcionalnosti naprave bodo omejene."
- THERMAL_STATUS_SHUTDOWN: "Takojšnji izklop je potreben.
Podpora za Thermal API očitno zahteva Android Q, druga zahteva pa je dodajanje novega HAL. Google pravi, da bodo naprave Pixel z Androidom Q (kar pomeni Pixel, Pixel XL, Pixel 2, Pixel 2 XL, Pixel 3, Pixel 3 XL, Pixel 3a, in Pixel 3a XL) podpira Thermal API, vendar Google dela na dodajanju podpore za druge naprave.
Preberite več o Thermal API tukaj.