Android Q додає новий API для запису внутрішнього аудіовиходу з іншої програми, а також для моніторингу температури пристрою.
Google дає, Google забирає. Кожен новий випуск 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 MediaProjection. На жаль, цей API не дозволяє програмам сторонніх розробників записувати внутрішній аудіовихід в інших програмах, змушувати сторонні пристрої для запису екрану записувати зовнішній аудіовихід із мікрофона пристрою (s). OEM-виробники, такі як Samsung і Huawei забезпечити системні програми для запису внутрішнього аудіовиходу під час запису екрана, але це єдиний спосіб для власників інших пристроїв для належного запису відео та аудіо на своїх пристроях варто купити a аксесуар стороннього виробника. На щастя, Google нарешті представляє в Android Q спосіб для сторонніх програм записувати аудіо з інших програм.
Google описує API AudioPlaybackCapture як аналог захоплення екрана, але для запису звуку. Хоча наразі єдиною програмою, яка використовує API, є Google Живі субтитри, інструмент доступності, який додає субтитри до будь-якого відео, що відтворюється на пристрої, API документації зазначено, що його основна мета — дозволити потоковим програмам захоплювати аудіосутність грали в ігри. Подумайте про мобільних геймерів, які транслюють свої сесії на такі сервіси, як Twitch або YouTube. API розроблено так, щоб не впливати на затримку аудіо програми, аудіо якої записується, що робить його ідеальним для запису ігрового процесу, щоб аудіо та відео не десинхронізувалися.
На відміну від перших днів Android, підхід Google до нових API більш обережний. AudioPlaybackCapture можна використовувати, лише якщо програма, аудіо якої записується, і програма, яка виконує захоплення, відповідають певним вимогам. Ось короткий перелік цих вимог:
- Щоб аудіо програми було записано сторонньою програмою, мають бути виконані такі вимоги:
- У програмі має бути встановлено значення true або вимкнено параметр allowAudioPlaybackCapture у маніфесті. (За умовчанням для додатків, орієнтованих на Android Q, значення true, але його можна встановити вручну для програм, орієнтованих на Android Pie.)
- Додаток, який створює аудіо, має використовувати аудіо типу USAGE_MEDIA, USAGE_GAME або USAGE_UNKNOWN.
- Для політики захоплення аудіо (setAllowedCapturePolicy) має бути встановлено значення ALLOW_CAPTURE_BY_ALL. Цю політику можна встановити під час виконання, але відтворення потрібно перезапустити, щоб зміна політики набула чинності. Якщо встановлено ALLOW_CAPTURE_BY_SYSTEM, лише системні програми можуть записувати аудіо (але вони обмежені в що вони не можуть зберегти аудіо, передати його сторонній програмі або записати на > 16 кГц 16-бітний моно якість.)
- Щоб програма записувала аудіо з іншої програми, мають бути виконані такі вимоги:
- Програма має відкрити запит MediaProjectionManager.createScreenCaptureIntent, і користувач має прийняти його.
- Додаток повинен утримувати RECORD_AUDIO дозвіл.
- Програма має бути в тому самому профілі користувача, що й програма, звук якої буде записано.
- Програма має відкрити запит MediaProjectionManager.createScreenCaptureIntent, і користувач має прийняти його.
Я думаю, що більшість ігор дозволять записувати свій аудіо програмами за допомогою цього нового API, але може знадобитися деякий час, щоб ігри оновилися для його підтримки. З іншого боку, не очікуйте, що програми потокового передавання музики чи відео підтримуватимуть цей API для сторонніх розробників через проблеми з ліцензуванням. Однак обмеження, накладені Google, якщо програма встановлює політику захоплення звуку на ALLOW_CAPTURE_BY_SYSTEM, означають, що Розробники програм для потокового передавання музики та відео мають бути згодні з увімкненням запису аудіо системою для покращення доступності.
Щоб дізнатися більше про API AudioPlaybackCapture в Android Q, перегляньте ця сторінка.
Моніторинг дроселювання за допомогою Thermal API в Android Q
Температурним регулюванням майже повністю керує система без жодних вхідних даних або навіть сповіщень до програм, на які найбільше впливає регулювання. Якщо ресурси пристрою занадто напружені, більшість пристроїв зменшуватимуть швидкість центрального та графічного процесорів на шкоду продуктивності гри. Ви, як розробник ігор, нічого не можете з цим зробити, окрім як попередити користувача перед зміною будь-яких налаштувань про потенційний вплив їхніх змін на продуктивність.
Однак із новим Thermal API в Android Q додатки можуть отримувати зворотні виклики для різних етапів обмеження продуктивності, надаючи розробники мають шанс допомогти зменшити навантаження на пристрій, скоротивши діяльність, яка потребує значного процесора, графічного процесора або модему використання. Наприклад, гра може динамічно зменшувати роздільну здатність, доки пристрій не перестане регулювати GPU, або програма Карти може вимкнути розширені функції, як-от навігація з доповненою реальністю щоб зменшити навантаження на процесор.
Щоб використовувати цей новий 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, Pixel 3a, і Pixel 3a XL) підтримують Thermal API, але Google працює над додаванням підтримки для інших пристроїв.
Докладніше про Thermal API тут.