Android Q dodaje nowy interfejs API do nagrywania wewnętrznego wyjścia audio z innej aplikacji, a także do monitorowania temperatury urządzenia.
Google daje i Google zabiera. Każda nowa wersja Androida wprowadza wiele nowych interfejsów API, które albo poprawiają funkcjonalność istniejących aplikacji, albo otwierają nowe kategorie aplikacji. Z drugiej strony Google usuwa także dostęp lub ogranicza możliwości istniejących API, aby poprawić bezpieczeństwo platformy Android. Wersja Androida Q nie jest inna i już dużo rozmawialiśmy o zmianach w zakresie współdzielonej pamięci, dostępu do schowka, powiadomień i innych interfejsów API. Na tegorocznym Podczas konferencji programistów Google I/O firma Google ogłosiła nowe interfejsy API w systemie Android Q, które są szczególnie interesujące dla użytkowników i twórców gier mobilnych: AudioPlaybackCapture i Termiczne API.
Nagrywanie dźwięku z innych aplikacji za pomocą funkcji AudioPlaybackCapture w systemie Android Q
Gry mobilne to ogromna branża i nic nie wskazuje na to, aby w najbliższym czasie miała ona spowolnić, szczególnie na rynkach takich jak USA, Chiny i Indie. Ponieważ coraz więcej osób spędza czas na smartfonach, grając i korzystając z mediów społecznościowych, nic dziwnego, że ludzie chcą dzielić się swoimi wrażeniami z gier online.
Android umożliwiał robienie zrzutów ekranu praktycznie od samego początku, ale przechwytywanie filmów z ekranu było możliwe dopiero od wersji Androida 5.0 Lollipop wraz z wprowadzeniem API MediaProjection. Niestety ten interfejs API nie pozwala aplikacjom innych firm na nagrywanie wewnętrznego wyjścia audio w innych aplikacjach, zmuszanie rejestratorów ekranu innych firm do nagrywania zewnętrznego wyjścia audio z mikrofonu urządzenia (S). Producenci OEM, tacy jak Samsung i Huaweia zapewniają aplikacje systemowe do nagrywania wewnętrznego wyjścia audio podczas nagrywania ekranu, ale jest to jedyny sposób dla właścicieli innych urządzeń, aby prawidłowo nagrywać wyjście wideo i audio ze swoich urządzeń, jest zakup A akcesoria strony trzeciej. Na szczęście Google w końcu wprowadza w systemie Android Q opcję umożliwiającą aplikacjom innych firm nagrywanie dźwięku z innych aplikacji.
Interfejs API AudioPlaybackCapture jest opisywany przez Google jako analog do przechwytywania ekranu, ale do nagrywania dźwięku. Chociaż jak dotąd jedyną aplikacją korzystającą z interfejsu API jest aplikacja Google Napis na żywo, narzędzie ułatwień dostępu, które dodaje napisy do dowolnego filmu odtwarzanego na urządzeniu, czyli interfejsy API dokumentacja stwierdza, że jego głównym celem jest umożliwienie aplikacjom do przesyłania strumieniowego przechwytywania istoty audio grane przez gry. Pomyśl o graczach mobilnych, którzy transmitują swoje sesje do serwisów takich jak Twitch czy YouTube. Interfejs API zaprojektowano tak, aby nie wpływał na opóźnienie dźwięku w aplikacji, której dźwięk jest przechwytywany, dzięki czemu idealnie nadaje się do nagrywania rozgrywki, dzięki czemu dźwięk i obraz nie ulegają desynchronizacji.
W przeciwieństwie do początków Androida, podejście Google do nowych interfejsów API jest bardziej ostrożne. Z funkcji AudioPlaybackCapture można korzystać tylko wtedy, gdy zarówno aplikacja, której dźwięk jest przechwytywany, jak i aplikacja przechwytująca, spełniają określone wymagania. Oto podsumowanie tych wymagań:
- Aby dźwięk aplikacji mógł zostać przechwycony przez aplikację innej firmy, muszą zostać spełnione następujące wymagania:
- Aplikacja musi mieć w swoim manifeście opcję zezwolenieAudioPlaybackCapture ustawioną na wartość true lub nieustawioną. (Domyślnie ma wartość true w przypadku aplikacji przeznaczonych dla systemu Android Q, ale można ją ustawić ręcznie w przypadku aplikacji przeznaczonych dla systemu Android Pie).
- Aplikacja produkująca dźwięk musi mieć użycie dźwięku typu USAGE_MEDIA, USAGE_GAME lub USAGE_UNKNOWN.
- Zasada przechwytywania dźwięku (setAllowedCapturePolicy) musi być ustawiona na ALLOW_CAPTURE_BY_ALL. Tę zasadę można ustawić w czasie wykonywania, ale aby zmiana zasad zaczęła obowiązywać, należy ponownie uruchomić odtwarzanie. Jeśli ustawiona jest opcja ALLOW_CAPTURE_BY_SYSTEM, dźwięk mogą nagrywać tylko aplikacje systemowe (ale są one ograniczone w że nie mogą zapisać dźwięku, przekazać go do aplikacji innej firmy ani nagrać z częstotliwością > 16 kHz w trybie 16-bitowym mono jakość.)
- Aby aplikacja mogła nagrywać dźwięk z innej aplikacji, muszą być spełnione następujące wymagania:
- Aplikacja musi wyświetlić monit MediaProjectionManager.createScreenCaptureIntent, a użytkownik musi go zaakceptować.
- Aplikacja musi posiadać NAGRAĆ DŹWIĘK pozwolenie.
- Aplikacja musi znajdować się w tym samym profilu użytkownika, co aplikacja, której dźwięk będzie nagrywany.
- Aplikacja musi wyświetlić monit MediaProjectionManager.createScreenCaptureIntent, a użytkownik musi go zaakceptować.
Wyobrażam sobie, że większość gier umożliwi przechwytywanie dźwięku przez aplikacje korzystające z tego nowego interfejsu API, ale aktualizacja gier do obsługi tej funkcji może zająć trochę czasu. Z drugiej strony nie należy oczekiwać, że jakiekolwiek aplikacje do strumieniowego przesyłania muzyki lub wideo będą obsługiwać ten interfejs API dla stron trzecich ze względu na problemy z licencjami. Jednak ograniczenia nałożone przez Google, jeśli aplikacja ustawi zasady przechwytywania dźwięku na ALLOW_CAPTURE_BY_SYSTEM, oznaczają, że twórcy aplikacji do strumieniowego przesyłania muzyki i wideo powinni zgodzić się na włączenie przechwytywania dźwięku przez system w celu poprawy dostępności.
Aby dowiedzieć się więcej o interfejsie API AudioPlaybackCapture w systemie Android Q, sprawdź ta strona.
Monitorowanie dławienia za pomocą interfejsu Thermal API w systemie Android Q
Ograniczeniem termicznym zarządza prawie w całości system, bez konieczności wprowadzania danych wejściowych ani nawet powiadamiania aplikacji, na które ograniczenie przepustowości jest najbardziej dotknięte. Jeśli zasoby urządzenia są zbyt obciążone, większość urządzeń zmniejszy prędkość procesora i karty graficznej ze szkodą dla wydajności gry. Jako twórca gry nie możesz nic z tym zrobić, poza ostrzeżeniem użytkownika przed zmianą jakichkolwiek ustawień o potencjalnym wpływie, jaki te zmiany mogą mieć na wydajność.
Jednak dzięki nowemu interfejsowi Thermal API w systemie Android Q aplikacje mogą odbierać wywołania zwrotne na różnych etapach ograniczania wydajności programistom szansę na zmniejszenie obciążenia urządzenia poprzez ograniczenie działań wymagających znacznej ilości procesora, karty graficznej lub modemu stosowanie. Na przykład gra może dynamicznie zmniejszać rozdzielczość, dopóki urządzenie nie przestanie ograniczać przepustowości procesora graficznego, a aplikacja Mapy może wyłączyć ulepszone funkcje, takie jak nawigacja w rzeczywistości rozszerzonej aby zmniejszyć obciążenie procesora.
Aby korzystać z nowego interfejsu API, aplikacje rejestrują odbiornik w PowerManager (addThermalStatusListener), a system wysyła do aplikacji jeden z następujących kodów stanu termicznego:
- THERMAL_STATUS_NONE: "Nie występuje ograniczenie."
- THERMAL_STATUS_LIGHT: „Lekkie ograniczanie, gdy nie ma to wpływu na UX.”
- THERMAL_STATUS_MODERATE: "Umiarkowane ograniczanie, tam gdzie nie ma to większego wpływu na UX."
- THERMAL_STATUS_SEVERE: "Poważne ograniczanie przepustowości, które ma duży wpływ na UX."
- THERMAL_STATUS_CRITICAL: „Platforma zrobiła wszystko, aby zmniejszyć moc.”
- THERMAL_STATUS_EMERGENCY: „Kluczowe komponenty platformy wyłączają się z powodu warunków termicznych. Funkcjonalność urządzenia będzie ograniczona.”
- THERMAL_STATUS_SHUTDOWN: "Wymagane natychmiastowe wyłączenie.
Obsługa Thermal API wymaga oczywiście Androida Q, ale kolejnym wymaganiem jest dodanie nowej warstwy HAL. Google twierdzi, że urządzenia Pixel z systemem Android Q (czyli Pixel, Pixel XL, Pixel 2, Pixel 2 XL, Pixel 3, Pixel 3 XL, Piksel 3a, I Pixela 3a XL) obsługują Thermal API, ale Google pracuje nad dodaniem obsługi innych urządzeń.
Przeczytaj więcej na temat Thermal API tutaj.