Android Q adaugă un nou API pentru a înregistra ieșirea audio internă de la o altă aplicație și, de asemenea, pentru a monitoriza temperatura dispozitivului.
Google dă, iar Google ia. Fiecare nouă lansare Android introduce o mulțime de noi API-uri care fie îmbunătățesc funcționalitatea aplicațiilor existente, fie deschid noi categorii de aplicații. Pe de altă parte, Google elimină și accesul la sau restricționează capacitățile API-urilor existente pentru a îmbunătăți securitatea platformei Android. Versiunea Android Q nu este diferită și am vorbit deja mult despre modificările aduse spațiului de stocare partajat, accesului la clipboard, notificări și alte API-uri. La anul acesta Conferința pentru dezvoltatori Google I/O, Google a anunțat noi API-uri în Android Q care sunt deosebit de interesante pentru utilizatori și dezvoltatorii de jocuri mobile: AudioPlaybackCapture și API-uri termice.
Înregistrarea sunetului din alte aplicații cu AudioPlaybackCapture în Android Q
Jocurile mobile sunt o industrie uriașă, fără semne de încetinire în curând, în special pe piețe precum SUA, China și India. Având în vedere că mai mulți oameni petrec timp pe smartphone-urile lor pentru jocuri și rețelele sociale, nu este surprinzător faptul că oamenii doresc să-și împărtășească experiențele de joc online.
Android a acceptat realizarea de capturi de ecran de la început, dar capturarea videoclipurilor pe ecran a fost acceptată doar de la Android 5.0 Lollipop, odată cu introducerea MediaProjection API. Din păcate, acest API nu permite aplicațiilor terțe să înregistreze ieșirea audio internă în alte aplicații, forțând dispozitivele de înregistrare de ecran de la terți să înregistreze ieșirea audio externă de la microfonul dispozitivului (s). OEM ca Samsung și Huawei furnizați aplicații de sistem pentru a înregistra ieșirea audio internă în timpul unei înregistrări pe ecran, dar singura modalitate pentru proprietarii altor dispozitive să înregistreze corect ieșirea video și audio de la dispozitivele lor este să cumpere A accesoriu terță parte. Din fericire, Google introduce în sfârșit o modalitate în Android Q pentru aplicațiile terță parte de a înregistra sunetul de la alte aplicații.
API-ul AudioPlaybackCapture este descris de Google ca analog al capturii de ecran, dar pentru înregistrarea audio. Deși singura aplicație de până acum care folosește API-ul este Google Subtitrare live, un instrument de accesibilitate care adaugă subtitrări oricărui videoclip redat pe dispozitiv, API-urile documentația afirmă că scopul său principal este de a permite aplicațiilor de streaming să capteze ființa audio jucate de jocuri. Gândiți-vă că jucătorii de pe mobil își transmit sesiunile în flux pe servicii precum Twitch sau YouTube. API-ul este conceput pentru a nu afecta latența audio a aplicației al cărei sunet este capturat, făcându-l perfect pentru înregistrarea jocului, astfel încât sunetul și videoclipul să nu fie desincronizate.
Spre deosebire de primele zile ale Android, abordarea Google față de noile API-uri este mai precaută. AudioPlaybackCapture poate fi utilizat numai dacă atât aplicația al cărei sunet este capturat, cât și aplicația care face captarea îndeplinesc cerințe specifice. Iată un rezumat al acestor cerințe:
- Pentru ca sunetul unei aplicații să fie captat de o aplicație terță parte, trebuie îndeplinite următoarele cerințe:
- Aplicația trebuie să aibă allowAudioPlaybackCapture setat la adevărat sau nesetat în Manifest. (Valoare implicită pentru aplicațiile care vizează Android Q, dar poate fi setat manual pentru aplicațiile care vizează Android Pie.)
- Aplicația care produce sunet trebuie să aibă utilizarea audio de tip USAGE_MEDIA, USAGE_GAME sau USAGE_UNKNOWN.
- Politica de captură audio (setAllowedCapturePolicy) trebuie setată la ALLOW_CAPTURE_BY_ALL. Această politică poate fi setată în timpul execuției, dar redarea trebuie repornită pentru ca modificarea politicii să intre în vigoare. Dacă ALLOW_CAPTURE_BY_SYSTEM este setat, atunci numai aplicațiile de sistem pot înregistra sunetul (dar sunt restricționate în că nu pot salva sunetul, îl pot transmite unei aplicații terță parte sau nu pot înregistra la > 16 kHz mono pe 16 biți calitate.)
- Pentru ca o aplicație să înregistreze audio dintr-o altă aplicație, trebuie îndeplinite următoarele cerințe:
- Aplicația trebuie să afișeze promptul MediaProjectionManager.createScreenCaptureIntent, iar utilizatorul trebuie să îl accepte.
- Aplicația trebuie să dețină ÎNREGISTREAZĂ AUDIO permisiune.
- Aplicația trebuie să fie în același profil de utilizator cu aplicația al cărei sunet va fi înregistrat.
- Aplicația trebuie să afișeze promptul MediaProjectionManager.createScreenCaptureIntent, iar utilizatorul trebuie să îl accepte.
Mi-aș imagina că majoritatea jocurilor vor permite ca sunetul lor să fie captat de aplicațiile care folosesc acest nou API, dar poate dura ceva timp până când jocurile vor fi actualizate pentru a-l accepta. Pe de altă parte, nu vă așteptați ca aplicațiile de streaming de muzică sau video să accepte acest API pentru terți din cauza problemelor legate de licențiere. Cu toate acestea, limitările pe care Google le-a impus dacă o aplicație își setează politica de captură audio la ALLOW_CAPTURE_BY_SYSTEM înseamnă că dezvoltatorii de aplicații de streaming muzical și video ar trebui să fie de acord să permită captarea audio de către sistem pentru a îmbunătăți accesibilitatea.
Pentru a citi mai multe despre API-ul AudioPlaybackCapture în Android Q, consultați această pagină.
Monitorizarea throttlingului cu API-ul termic în Android Q
Limitarea termică este gestionată aproape în întregime de sistem, fără nicio intrare de la sau chiar notificare către aplicațiile care sunt cele mai afectate de accelerare. Dacă resursele dispozitivului sunt prea solicitate, majoritatea dispozitivelor vor accelera viteza procesorului și a GPU-ului în detrimentul performanței jocului. Nu există nimic pe care tu, în calitate de dezvoltator de jocuri, poți face cu adevărat în privința asta, cu excepția avertizării utilizatorului înainte de a modifica orice setări despre impactul potențial pe care îl pot avea modificările asupra performanței.
Cu noul API Thermal din Android Q, cu toate acestea, aplicațiile pot primi apeluri pentru diferite etape de limitare a performanței - oferind dezvoltatorii au șansa de a ajuta la reducerea efortului asupra dispozitivului, reducând activitățile care necesită CPU, GPU sau modem semnificativ utilizare. De exemplu, un joc ar putea reduce dinamic rezoluția până când dispozitivul nu mai este accelerat GPU sau o aplicație Maps ar putea dezactiva funcții îmbunătățite, cum ar fi navigare în realitate augmentată pentru a reduce sarcina CPU-ului.
Pentru a utiliza acest nou API, aplicațiile înregistrează un ascultător în PowerManager (addThermalStatusListener), iar sistemul trimite aplicației unul dintre următoarele coduri de stare termică:
- THERMAL_STATUS_NONE: „Nu este sub limitare”.
- THERMAL_STATUS_LIGHT: „Reglare ușoară acolo unde UX nu este afectat.”
- THERMAL_STATUS_MODERATE: „Reglare moderată în cazul în care UX nu este afectat în mare măsură.”
- THERMAL_STATUS_SEVERE: „Reglare severă în cazul în care UX este afectată în mare măsură.”
- THERMAL_STATUS_CRITICAL: „Platforma a făcut totul pentru a reduce puterea.”
- THERMAL_STATUS_EMERGENCY: „Componentele cheie din platformă se opresc din cauza stării termice. Funcționalitățile dispozitivului vor fi limitate.”
- THERMAL_STATUS_SHUTDOWN: „Este nevoie de oprire imediată.
Suportul pentru Thermal API necesită evident Android Q, dar o altă cerință este adăugarea unui nou HAL. Google spune că dispozitivele Pixel de pe Android Q (adică Pixel, Pixel XL, Pixel 2, Pixel 2 XL, Pixel 3, Pixel 3 XL, Pixel 3a, și Pixel 3a XL) acceptă API-ul Thermal, dar Google lucrează la adăugarea de suport pentru alte dispozitive.
Citiți mai multe despre Thermal API aici.