В Android Q добавлен новый API для записи внутреннего аудиовыхода из другого приложения, а также для мониторинга температуры устройства.
Гугл дает, Гугл и забирает. В каждой новой версии Android представлено множество новых API-интерфейсов, которые либо улучшают функциональность существующих приложений, либо открывают новые категории приложений. С другой стороны, Google также закрывает доступ к существующим API или ограничивает их возможности для повышения безопасности платформы Android. Версия Android Q ничем не отличается, и мы уже много говорили об изменениях в общем хранилище, доступе к буферу обмена, уведомлениях и других API. В этом году На конференции разработчиков Google I/O Google анонсировала новые API в Android Q, которые особенно интересны пользователям и разработчикам мобильных игр: AudioPlaybackCapture и Термальные API.
Запись звука из других приложений с помощью AudioPlaybackCapture в Android Q
Мобильные игры — это огромная индустрия, в которой нет никаких признаков замедления в ближайшее время, особенно на таких рынках, как США, Китай и Индия. Поскольку все больше людей проводят время на своих смартфонах для игр и социальных сетей, неудивительно, что люди хотят поделиться своим игровым опытом в Интернете.
Android поддерживает создание снимков экрана практически с самого начала, но съемка видео с экрана поддерживается только с версии Android 5.0 Lollipop с появлением функции Медиапроекция API. К сожалению, этот API не позволяет сторонним приложениям записывать внутренний аудиовыход в других приложениях. принуждение сторонних устройств записи экрана записывать внешний аудиовыход с микрофона устройства (с). OEM-производители, такие как Samsung и Хуавей предоставить системным приложениям возможность записывать внутренний аудиовыход во время записи экрана, но это единственный способ владельцам других устройств для правильной записи видео и аудио вывода со своих устройств стоит купить а сторонний аксессуар. К счастью, Google наконец-то представил в Android Q возможность для сторонних приложений записывать звук из других приложений.
API AudioPlaybackCapture описывается Google как аналог захвата экрана, но для записи звука. Хотя на данный момент единственным приложением, использующим API, является Google Живая подпись, инструмент специальных возможностей, который добавляет субтитры к любому видео, воспроизводимому на устройстве, API В документации указано, что его основная цель — позволить потоковым приложениям захватывать передаваемый звук. играют в игры. Подумайте о мобильных геймерах, транслирующих свои сессии на такие сервисы, как Twitch или YouTube. API разработан так, чтобы не влиять на задержку звука в приложении, звук которого захватывается, что делает его идеальным для записи игрового процесса, чтобы звук и видео не рассинхронизировались.
В отличие от первых дней существования Android, подход Google к новым API более осторожный. AudioPlaybackCapture можно использовать только в том случае, если приложение, звук которого захватывается, и приложение, выполняющее захват, соответствуют определенным требованиям. Вот краткое изложение этих требований:
- Чтобы звук приложения мог быть записан сторонним приложением, должны быть выполнены следующие требования:
- В манифесте приложения для параметраallowAudioPlaybackCapture должно быть установлено значение true или не установлено. (По умолчанию это значение равно true для приложений, ориентированных на Android Q, но его можно установить вручную для приложений, ориентированных на Android Pie.)
- Приложение, создающее звук, должно иметь тип использования звука USAGE_MEDIA, USAGE_GAME или USAGE_UNKNOWN.
- Для политики захвата звука (setAllowedCapturePolicy) должно быть установлено значение ALLOW_CAPTURE_BY_ALL. Эту политику можно установить во время выполнения, но воспроизведение необходимо перезапустить, чтобы изменения политики вступили в силу. Если установлен параметр ALLOW_CAPTURE_BY_SYSTEM, только системные приложения могут записывать звук (но их возможности ограничены). что они не могут сохранить звук, передать его стороннему приложению или записать с частотой > 16 кГц, 16-битное моно. качество.)
- Чтобы приложение могло записывать звук из другого приложения, должны быть выполнены следующие требования:
- Приложение должно вызвать приглашение MediaProjectionManager.createScreenCaptureIntent, и пользователь должен его принять.
- Приложение должно содержать ЗАПИСЬ АУДИО разрешение.
- Приложение должно находиться в том же профиле пользователя, что и приложение, звук которого будет записываться.
- Приложение должно вызвать приглашение MediaProjectionManager.createScreenCaptureIntent, и пользователь должен его принять.
Я предполагаю, что большинство игр позволят приложениям захватывать звук с помощью этого нового API, но обновление игр для его поддержки может занять некоторое время. С другой стороны, не ждите, что какие-либо приложения для потоковой передачи музыки или видео будут поддерживать этот API для третьих сторон из-за проблем с лицензированием. Однако ограничения, которые Google накладывает, если приложение устанавливает для политики захвата звука значение ALLOW_CAPTURE_BY_SYSTEM, означают, что Разработчики приложений для потоковой передачи музыки и видео должны согласиться с возможностью захвата звука системой для улучшения доступности.
Чтобы узнать больше об API AudioPlaybackCapture в Android Q, посетите эта страница.
Мониторинг регулирования с помощью Thermal API в Android Q
Тепловое регулирование почти полностью управляется системой без каких-либо данных или даже уведомлений от приложений, которые больше всего страдают от регулирования. Если ресурсы устройства слишком перегружены, большинство устройств будут снижать скорость процессора и графического процессора в ущерб производительности вашей игры. Вы, как разработчик игр, ничего не можете с этим поделать, кроме как предупредить пользователя перед изменением каких-либо настроек о потенциальном влиянии их изменений на производительность.
Однако благодаря новому Thermal API в Android Q приложения могут получать обратные вызовы для разных этапов регулирования производительности. разработчики получают возможность помочь снизить нагрузку на устройство, сократив количество операций, требующих значительных ресурсов ЦП, графического процессора или модема. Применение. Например, игра может динамически уменьшать разрешение до тех пор, пока устройство не перестанет регулировать графический процессор, или приложение «Карты» может отключить расширенные функции, такие как навигация в дополненной реальности для снижения нагрузки на процессор.
Чтобы использовать этот новый API, приложения регистрируют прослушиватель в PowerManager (addThermalStatusListener), и система отправляет приложению один из следующих кодов теплового состояния:
- THERMAL_STATUS_NONE: «Регулирование не выполняется».
- THERMAL_STATUS_LIGHT: «Небольшое регулирование, при котором UX не влияет».
- THERMAL_STATUS_MODERATE: «Умеренное регулирование, при котором UX не сильно влияет».
- THERMAL_STATUS_SEVERE: «Сильное регулирование, которое сильно влияет на UX».
- THERMAL_STATUS_CRITICAL: «Платформа сделала все возможное для снижения энергопотребления».
- THERMAL_STATUS_EMERGENCY: «Ключевые компоненты платформы отключаются из-за перегрева. Функциональность устройства будет ограничена».
- THERMAL_STATUS_SHUTDOWN: «Необходимо немедленное выключение.
Очевидно, что для поддержки Thermal API требуется Android Q, но еще одним требованием является добавление нового HAL. Google сообщает, что устройства Pixel на Android Q (имеются в виду Pixel, Pixel XL, Pixel 2, Pixel 2 XL, Pixel 3, Pixel 3 XL, Пиксель 3а, и Пиксель 3а XL) поддерживают Thermal API, но Google работает над добавлением поддержки для других устройств.
Подробнее о Термальный API здесь.