Android Q pridáva nové API na zaznamenávanie interného zvukového výstupu z inej aplikácie a tiež na sledovanie teploty zariadenia.
Google dáva a Google berie. Každé nové vydanie systému Android predstavuje množstvo nových rozhraní API, ktoré buď zlepšujú funkčnosť existujúcich aplikácií, alebo otvárajú nové kategórie aplikácií. Na druhej strane Google tiež odstraňuje prístup alebo obmedzuje možnosti existujúcich API, aby zlepšil bezpečnosť platformy Android. Vydanie systému Android Q nie je iné a už sme veľa hovorili o jeho zmenách v zdieľanom úložisku, prístupe do schránky, upozorneniach a ďalších rozhraniach API. Na tohtoročnom Konferencia vývojárov Google I/O, spoločnosť Google oznámila nové rozhrania API v systéme Android Q, ktoré sú obzvlášť zaujímavé pre používateľov a vývojárov mobilných hier: AudioPlaybackCapture a Tepelné API.
Nahrávanie zvuku z iných aplikácií pomocou funkcie AudioPlaybackCapture v systéme Android Q
Mobilné hry sú obrovským odvetvím bez známok spomalenia v dohľadnej dobe, najmä na trhoch ako USA, Čína a India. Keďže stále viac ľudí trávi čas na svojich smartfónoch hraním hier a sociálnymi médiami, nie je prekvapením, že ľudia chcú zdieľať svoje herné zážitky online.
Android podporuje snímanie obrazoviek v podstate od úplného začiatku, no snímanie videí obrazovky je podporované až od verzie Android 5.0 Lollipop so zavedením MediaProjection API. Bohužiaľ, toto API neumožňuje aplikáciám tretích strán nahrávať interný zvukový výstup v iných aplikáciách, prinútiť rekordéry obrazovky tretích strán zaznamenávať externý zvukový výstup z mikrofónu zariadenia (s). OEM ako Samsung a Huawei poskytnúť systémové aplikácie na nahrávanie interného zvukového výstupu počas nahrávania obrazovky, ale je to jediný spôsob pre vlastníkov iných zariadení na správne nahrávanie obrazového a zvukového výstupu z ich zariadení je kúpiť a príslušenstvo tretej strany. Našťastie Google konečne v systéme Android Q predstavuje spôsob, akým môžu aplikácie tretích strán zaznamenávať zvuk z iných aplikácií.
Rozhranie API AudioPlaybackCapture je spoločnosťou Google opísané ako analóg snímania obrazovky, ale na nahrávanie zvuku. Hoci jedinou aplikáciou, ktorá zatiaľ používa API, je aplikácia Google Živý prepis, nástroj na zjednodušenie ovládania, ktorý pridáva titulky k akémukoľvek videu prehrávanému na zariadení, API dokumentácia uvádza, že jeho primárnym účelom je umožniť streamovacím aplikáciám zachytiť zvukovú bytosť hrané hrami. Myslite na to, že mobilní hráči streamujú svoje relácie do služieb ako Twitch alebo YouTube. Rozhranie API je navrhnuté tak, aby neovplyvňovalo latenciu zvuku aplikácie, ktorej zvuk sa zaznamenáva, vďaka čomu je ideálne na nahrávanie hier, takže zvuk a video sa nedesynchronizujú.
Na rozdiel od prvých dní systému Android je prístup spoločnosti Google k novým rozhraniam API opatrnejší. AudioPlaybackCapture je možné použiť iba vtedy, ak aplikácia, ktorej zvuk sa zaznamenáva, aj aplikácia, ktorá nahrávanie, spĺňajú špecifické požiadavky. Tu je súhrn týchto požiadaviek:
- Aby bol zvuk aplikácie zachytený aplikáciou tretej strany, musia byť splnené nasledujúce požiadavky:
- Aplikácia musí mať vo svojom manifeste allowAudioPlaybackCapture nastavené na hodnotu true alebo deaktivované. (Pre aplikácie zacielené na Android Q je predvolená hodnota true, ale pre aplikácie zacielené na Android Pie sa dá nastaviť manuálne.)
- Aplikácia produkujúca zvuk musí mať využitie zvuku typu USAGE_MEDIA, USAGE_GAME alebo USAGE_UNKNOWN.
- Politika snímania zvuku (setAllowedCapturePolicy) musí byť nastavená na ALLOW_CAPTURE_BY_ALL. Toto pravidlo je možné nastaviť pri spustení, ale aby sa zmena pravidiel prejavila, prehrávanie sa musí reštartovať. Ak je nastavené ALLOW_CAPTURE_BY_SYSTEM, zvuk môžu nahrávať iba systémové aplikácie (ale sú obmedzené v že nemôžu uložiť zvuk, odovzdať ho aplikácii tretej strany alebo nahrávať pri > 16 kHz 16-bit mono kvalita.)
- Aby aplikácia mohla nahrávať zvuk z inej aplikácie, musia byť splnené nasledujúce požiadavky:
- Aplikácia musí vyvolať výzvu MediaProjectionManager.createScreenCaptureIntent a používateľ ju musí prijať.
- Aplikácia musí obsahovať RECORD_AUDIO povolenie.
- Aplikácia musí byť v rovnakom používateľskom profile ako aplikácia, ktorej zvuk sa bude nahrávať.
- Aplikácia musí vyvolať výzvu MediaProjectionManager.createScreenCaptureIntent a používateľ ju musí prijať.
Predstavoval by som si, že väčšina hier umožní, aby ich zvuk zachytili aplikácie pomocou tohto nového API, ale môže chvíľu trvať, kým sa hry aktualizujú, aby ho podporovali. Na druhej strane neočakávajte, že žiadne aplikácie na streamovanie hudby alebo videa budú podporovať toto API pre tretie strany kvôli problémom s licencovaním. Obmedzenia, ktoré spoločnosť Google zaviedla v prípade, že aplikácia nastaví politiku zachytávania zvuku na ALLOW_CAPTURE_BY_SYSTEM, však znamená, že Vývojári aplikácií na streamovanie hudby a videa by mali byť v poriadku s povolením zachytávania zvuku systémom na zlepšenie dostupnosti.
Ak si chcete prečítať viac o rozhraní AudioPlaybackCapture API v systéme Android Q, pozrite sa táto strana.
Monitorovanie obmedzovania pomocou Thermal API v systéme Android Q
Tepelné škrtenie je takmer úplne riadené systémom bez akéhokoľvek vstupu alebo dokonca upozornenia pre aplikácie, ktoré sú škrtením najviac ovplyvnené. Ak sú zdroje zariadenia príliš namáhané, väčšina zariadení zníži rýchlosť CPU a GPU na úkor výkonu vašej hry. Ako herný vývojár s tým nemôžete urobiť nič, iba varovať používateľa pred tým, ako zmenia akékoľvek nastavenia, o možnom vplyve ich zmien na výkon.
S novým rozhraním Thermal API v systéme Android Q však môžu aplikácie prijímať spätné volania pre rôzne fázy obmedzovania výkonu. vývojári majú šancu pomôcť znížiť zaťaženie zariadenia tým, že znížia aktivity, ktoré vyžadujú značné množstvo CPU, GPU alebo modemu použitie. Napríklad hra môže dynamicky znižovať rozlíšenie, kým zariadenie prestane obmedzovať GPU, alebo aplikácia Mapy môže deaktivovať vylepšené funkcie, ako napr. navigácia s rozšírenou realitou aby sa znížilo zaťaženie procesora.
Ak chcete použiť toto nové rozhranie API, aplikácie zaregistrujú poslucháč v PowerManager (addThermalStatusListener) a systém odošle aplikácii jeden z nasledujúcich tepelných stavových kódov:
- THERMAL_STATUS_NONE: "Nie je pod škrtením."
- THERMAL_STATUS_LIGHT: "Obmedzenie svetla tam, kde nie je ovplyvnené UX."
- THERMAL_STATUS_MODERATE: "Mierne obmedzovanie, kde UX nie je výrazne ovplyvnené."
- THERMAL_STATUS_SEVERE: "Výrazné obmedzenie, kde je do značnej miery ovplyvnené UX."
- THERMAL_STATUS_CRITICAL: "Platforma urobila všetko pre zníženie spotreby."
- THERMAL_STATUS_EMERGENCY: "Kľúčové komponenty na platforme sa vypínajú kvôli teplotným podmienkam. Funkcie zariadenia budú obmedzené."
- THERMAL_STATUS_SHUTDOWN: "Potrebuje sa okamžite vypnúť."
Podpora pre Thermal API samozrejme vyžaduje Android Q, ale ďalšou požiadavkou je pridanie nového HAL. Google hovorí, že zariadenia Pixel so systémom Android Q (čo znamená Pixel, Pixel XL, Pixel 2, Pixel 2 XL, Pixel 3, Pixel 3 XL, Pixel 3a, a Pixel 3a XL) podporujú Thermal API, ale Google pracuje na pridaní podpory pre ďalšie zariadenia.
Prečítajte si viac o Thermal API tu.