Android Q aggiunge una nuova API per registrare l'uscita audio interna da un'altra app e anche per monitorare la temperatura del dispositivo.
Google dà e Google toglie. Ogni nuova versione di Android introduce molte nuove API che migliorano la funzionalità delle app esistenti o aprono nuove categorie di app. D'altra parte, Google rimuove anche l'accesso o limita le capacità delle API esistenti per migliorare la sicurezza della piattaforma Android. La versione di Android Q non è diversa e abbiamo già parlato molto delle modifiche apportate allo spazio di archiviazione condiviso, all'accesso agli appunti, alle notifiche e ad altre API. A quest'anno Conferenza degli sviluppatori I/O di Google, Google ha annunciato nuove API in Android Q particolarmente interessanti per gli utenti e gli sviluppatori di giochi per dispositivi mobili: AudioPlaybackCapture e API termiche.
Registrazione dell'audio da altre app con AudioPlaybackCapture in Android Q
Il gioco mobile è un settore enorme che non mostra segni di rallentamento nel breve periodo, soprattutto in mercati come Stati Uniti, Cina e India. Dato che sempre più persone trascorrono il tempo sui propri smartphone per giocare e social media, non sorprende che le persone vogliano condividere le proprie esperienze di gioco online.
Android ha supportato l'acquisizione di screenshot praticamente fin dall'inizio, ma l'acquisizione di video dello schermo è stata supportata solo a partire da Android 5.0 Lollipop con l'introduzione del API MediaProjection. Purtroppo, questa API non consente alle app di terze parti di registrare l'output audio interno in altre app, costringendo i registratori di schermo di terze parti a registrare l'uscita audio esterna dal microfono del dispositivo (S). OEM come Samsung e Huawei fornire app di sistema per registrare l'uscita audio interna durante la registrazione dello schermo, ma è l'unico modo per i possessori di altri dispositivi è necessario acquistare per registrare correttamente l'uscita video e audio dai propri dispositivi UN accessorio di terze parti. Fortunatamente, Google sta finalmente introducendo in Android Q un modo per consentire alle app di terze parti di registrare l'audio da altre app.
L'API AudioPlaybackCapture è descritta da Google come l'analogo della cattura dello schermo, ma per la registrazione audio. Anche se finora l’unica app a utilizzare l’API è quella di Google Sottotitoli in tempo reale, uno strumento di accessibilità che aggiunge didascalie a qualsiasi video riprodotto sul dispositivo, le API la documentazione afferma che il suo scopo principale è consentire alle app di streaming di catturare l'audio giocato dai giochi. Pensa ai giocatori mobili che trasmettono le loro sessioni su servizi come Twitch o YouTube. L'API è progettata per non influenzare la latenza audio dell'app di cui viene catturato l'audio, rendendola perfetta per la registrazione del gameplay in modo che l'audio e il video non vengano desincronizzati.
A differenza dei primi tempi di Android, l’approccio di Google alle nuove API è più cauto. AudioPlaybackCapture può essere utilizzato solo se sia l'app di cui viene acquisito l'audio sia l'app che esegue l'acquisizione soddisfano requisiti specifici. Ecco un riepilogo di tali requisiti:
- Affinché l'audio di un'app venga acquisito da un'app di terze parti, devono essere soddisfatti i seguenti requisiti:
- L'app deve avere consentiAudioPlaybackCapture impostato su true o non impostato nel manifest. (Il valore predefinito è true per le app destinate ad Android Q, ma può essere impostato manualmente per le app destinate ad Android Pie.)
- L'app che produce audio deve avere un utilizzo audio di tipo USAGE_MEDIA, USAGE_GAME o USAGE_UNKNOWN.
- La policy di acquisizione audio (setAllowedCapturePolicy) deve essere impostata su ALLOW_CAPTURE_BY_ALL. Questa policy può essere impostata in fase di runtime, ma la riproduzione deve essere riavviata affinché la modifica della policy abbia effetto. Se ALLOW_CAPTURE_BY_SYSTEM è impostato, solo le app di sistema possono registrare l'audio (ma sono limitate in che non possono salvare l'audio, trasmetterlo a un'app di terze parti o registrare a > 16kHz mono a 16 bit qualità.)
- Affinché un'app possa registrare l'audio da un'altra app, devono essere soddisfatti i seguenti requisiti:
- L'app deve visualizzare il prompt MediaProjectionManager.createScreenCaptureIntent e l'utente deve accettarlo.
- L'app deve contenere il file REGISTRA AUDIO autorizzazione.
- L'app deve trovarsi nello stesso profilo utente dell'app di cui verrà registrato l'audio.
- L'app deve visualizzare il prompt MediaProjectionManager.createScreenCaptureIntent e l'utente deve accettarlo.
Immagino che la maggior parte dei giochi consentirà l'acquisizione dell'audio da parte delle app che utilizzano questa nuova API, ma potrebbe essere necessario del tempo prima che i giochi vengano aggiornati per supportarlo. D'altra parte, non aspettarti che app di streaming di musica o video supportino questa API per terze parti a causa di problemi con la licenza. Tuttavia, le limitazioni imposte da Google se un'app imposta la policy di acquisizione audio su ALLOW_CAPTURE_BY_SYSTEM significa che gli sviluppatori di app di streaming di musica e video dovrebbero essere d'accordo nell'abilitare l'acquisizione audio da parte del sistema per migliorare l'accessibilità.
Per ulteriori informazioni sull'API AudioPlaybackCapture in Android Q, consulta questa pagina.
Monitoraggio della limitazione con l'API termica in Android Q
Il throttling termico è quasi interamente gestito dal sistema senza alcun input o notifica alle app maggiormente colpite dal throttling. Se le risorse del dispositivo sono troppo limitate, la maggior parte dei dispositivi limiterà la velocità della CPU e della GPU a scapito delle prestazioni del gioco. In qualità di sviluppatore di giochi, non puoi fare nulla al riguardo se non avvisare l'utente prima che modifichi qualsiasi impostazione sul potenziale impatto che le modifiche potrebbero avere sulle prestazioni.
Con la nuova API termica in Android Q, tuttavia, le app possono ricevere callback per diverse fasi di limitazione delle prestazioni agli sviluppatori la possibilità di contribuire a ridurre lo sforzo sul dispositivo riducendo le attività che richiedono CPU, GPU o modem significativi utilizzo. Ad esempio, un gioco potrebbe ridurre dinamicamente la risoluzione finché il dispositivo non smette più di limitare la GPU oppure un'app di Maps potrebbe disabilitare funzionalità avanzate come navigazione in realtà aumentata per ridurre il carico sulla CPU.
Per utilizzare questa nuova API, le app registrano un ascoltatore in PowerManager (addThermalStatusListener) e il sistema invia all'app uno dei seguenti codici di stato termico:
- THERMAL_STATUS_NONE: "Non in fase di limitazione."
- THERMAL_STATUS_LIGHT: "Limitazione della luce dove la UX non è influenzata."
- THERMAL_STATUS_MODERATE: "Limitazione moderata in cui la UX non è ampiamente influenzata."
- THERMAL_STATUS_SEVERE: "Grave limitazione della velocità in cui l'UX è ampiamente influenzata."
- THERMAL_STATUS_CRITICAL: "La piattaforma ha fatto di tutto per ridurre la potenza."
- THERMAL_STATUS_EMERGENCY: "I componenti chiave della piattaforma si stanno spegnendo a causa di condizioni termiche. Le funzionalità del dispositivo saranno limitate."
- THERMAL_STATUS_SHUTDOWN: "È necessario lo spegnimento immediato.
Il supporto per l'API Thermal richiede ovviamente Android Q, ma un altro requisito è l'aggiunta di un nuovo HAL. Google afferma che i dispositivi Pixel su Android Q (ovvero Pixel, Pixel XL, Pixel 2, Pixel 2 XL, Pixel 3, Pixel 3 XL, Pixel 3a, E Pixel 3aXL) supportano l'API Thermal, ma Google sta lavorando per aggiungere il supporto per altri dispositivi.
Leggi di più su API termica qui.