Android Q umožní aplikacím nahrávat zvuk z jiných aplikací a sledovat teplotu zařízení

Android Q přidává nové API pro záznam interního zvukového výstupu z jiné aplikace a také pro sledování teploty zařízení.

Google dává a Google bere. Každé nové vydání Androidu přináší spoustu nových rozhraní API, která buď vylepšují funkčnost stávajících aplikací, nebo otevírají nové kategorie aplikací. Na druhou stranu Google také odstraňuje přístup nebo omezuje možnosti stávajících API, aby zlepšil zabezpečení platformy Android. Vydání Androidu Q se neliší a o jeho změnách ve sdíleném úložišti, přístupu do schránky, oznámení a dalších rozhraních API jsme již hodně mluvili. Na letošním Konference vývojářů Google I/O, Google oznámila nová rozhraní API v systému Android Q, která jsou zvláště zajímavá pro uživatele a vývojáře mobilních her: AudioPlaybackCapture a Termální API.

Nahrávání zvuku z jiných aplikací pomocí AudioPlaybackCapture v systému Android Q

Mobilní hry jsou obrovským odvětvím bez známek zpomalení v dohledné době, zejména na trzích, jako jsou USA, Čína a Indie. Vzhledem k tomu, že stále více lidí tráví čas na svých chytrých telefonech hraním her a sociálních sítí, není žádným překvapením, že lidé chtějí sdílet své herní zážitky online.

Android podporuje pořizování snímků obrazovky v podstatě od samého začátku, ale pořizování videí z obrazovky je podporováno až od verze Android 5.0 Lollipop s představením MediaProjection API. Toto API bohužel neumožňuje aplikacím třetích stran nahrávat interní zvukový výstup v jiných aplikacích, nucení rekordérů obrazovky třetích stran nahrávat externí zvukový výstup z mikrofonu zařízení (s). OEM jako Samsung a Huawei poskytovat systémové aplikace pro záznam interního zvukového výstupu během nahrávání obrazovky, ale je to jediný způsob pro vlastníky jiných zařízení, aby správně nahrávali obrazový a zvukový výstup ze svých zařízení, je zakoupit A příslušenství třetí strany. Naštěstí Google konečně v Androidu Q zavádí způsob, jak aplikace třetích stran nahrávat zvuk z jiných aplikací.

Rozhraní API AudioPlaybackCapture je společností Google popsáno jako analog se snímáním obrazovky, ale pro záznam zvuku. Ačkoli jediná aplikace, která dosud používá API, je Google Živý přepis, nástroj pro usnadnění, který přidává titulky k jakémukoli videu přehrávanému na zařízení, rozhraní API dokumentace uvádí, že jeho primárním účelem je umožnit streamovacím aplikacím zachytit zvukovou bytost hrané hrami. Myslete na mobilní hráče, kteří streamují své relace do služeb jako Twitch nebo YouTube. Rozhraní API je navrženo tak, aby neovlivnilo latenci zvuku aplikace, jejíž zvuk je zachycován, takže je ideální pro nahrávání her, takže nedochází k desynchronizaci zvuku a videa.

Na rozdíl od počátků Androidu je přístup Google k novým rozhraním API opatrnější. AudioPlaybackCapture lze použít pouze v případě, že aplikace, jejíž zvuk se zachycuje, i aplikace, která zachycuje, splňují specifické požadavky. Zde je souhrn těchto požadavků:

  • Aby byl zvuk aplikace zachycen aplikací třetí strany, musí být splněny následující požadavky:
    • Aplikace musí mít v manifestu allowAudioPlaybackCapture buď nastaveno na true, nebo deaktivováno. (Výchozí hodnota je true pro aplikace cílené na Android Q, ale lze ji ručně nastavit pro aplikace cílené na Android Pie.)
    • Aplikace produkující zvuk musí mít použití zvuku typu USAGE_MEDIA, USAGE_GAME nebo USAGE_UNKNOWN.
    • Zásady zachycování zvuku (setAllowedCapturePolicy) musí být nastaveny na ALLOW_CAPTURE_BY_ALL. Tuto zásadu lze nastavit za běhu, ale aby se změna zásad projevila, musí být přehrávání restartováno. Pokud je nastaveno ALLOW_CAPTURE_BY_SYSTEM, mohou zvuk nahrávat pouze systémové aplikace (ale jsou omezeny v že nemohou uložit zvuk, předat jej aplikaci třetí strany nebo nahrávat při > 16 kHz 16bitové mono kvalitní.)
  • Aby aplikace mohla nahrávat zvuk z jiné aplikace, musí být splněny následující požadavky:
    • Aplikace musí vyvolat výzvu MediaProjectionManager.createScreenCaptureIntent a uživatel ji musí přijmout.
      Potvrzovací dialog, který se uživatelům zobrazí, když se aplikace pokusí zachytit obrazovku pomocí MediaProjection API.
    • Aplikace musí držet RECORD_AUDIO povolení.
    • Aplikace musí být ve stejném uživatelském profilu jako aplikace, jejíž zvuk se bude nahrávat.

Představoval bych si, že většina her umožní aplikacím pomocí tohoto nového API zachytit jejich zvuk, ale může nějakou dobu trvat, než se hry aktualizují, aby to podporovaly. Na druhou stranu neočekávejte, že žádné aplikace pro streamování hudby nebo videa budou podporovat toto API pro třetí strany kvůli problémům s licencováním. Omezení, která společnost Google zavedla, pokud aplikace nastaví svou zásadu snímání zvuku na ALLOW_CAPTURE_BY_SYSTEM, však znamenají, že vývojáři aplikací pro streamování hudby a videa by měli být v pořádku s tím, že systém povolí nahrávání zvuku, aby se zlepšila dostupnost.

Chcete-li si přečíst více o rozhraní AudioPlaybackCapture API v systému Android Q, podívejte se tato stránka.

Monitorování omezení pomocí Thermal API v systému Android Q

Tepelné omezování je téměř výhradně řízeno systémem bez jakéhokoli vstupu nebo dokonce upozornění aplikací, které jsou omezením nejvíce ovlivněny. Pokud jsou zdroje zařízení příliš napjaté, většina zařízení sníží rychlost CPU a GPU na úkor výkonu vaší hry. Jako herní vývojáři s tím nemůžete udělat nic jiného, ​​než varovat uživatele před tím, než změní jakékoli nastavení, o potenciálním dopadu, který mohou mít jejich změny na výkon.

S novým rozhraním Thermal API v systému Android Q však mohou aplikace přijímat zpětná volání pro různé fáze omezování výkonu. možnost vývojářům pomoci snížit zátěž zařízení tím, že sníží aktivity, které vyžadují značné množství CPU, GPU nebo modemu používání. Hra může například dynamicky snižovat rozlišení, dokud zařízení přestane omezovat GPU, nebo aplikace Mapy může deaktivovat vylepšené funkce, jako je navigace s rozšířenou realitou ke snížení zátěže CPU.

Chcete-li použít toto nové rozhraní API, aplikace zaregistrují posluchač v PowerManageru (addThermalStatusListener) a systém odešle aplikaci jeden z následujících kódů tepelného stavu:

  • THERMAL_STATUS_NONE: "Není pod omezením."
  • THERMAL_STATUS_LIGHT: "Omezování světla tam, kde není ovlivněno uživatelské prostředí."
  • THERMAL_STATUS_MODERATE: "Střední omezení, kde UX není výrazně ovlivněno."
  • THERMAL_STATUS_SEVERE: "Závažné omezení tam, kde je do značné míry ovlivněno uživatelské prostředí."
  • THERMAL_STATUS_CRITICAL: "Platforma udělala vše pro snížení spotřeby."
  • THERMAL_STATUS_EMERGENCY: "Klíčové komponenty platformy se vypínají kvůli teplotním podmínkám. Funkce zařízení budou omezené."
  • THERMAL_STATUS_SHUTDOWN: "Potřebuji okamžitě vypnout."

Podpora pro Thermal API samozřejmě vyžaduje Android Q, ale dalším požadavkem je přidání nového HAL. Google říká, že zařízení Pixel se systémem Android Q (tj. 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 přidání podpory pro další zařízení.

Přečtěte si více o Thermal API zde.