В Android 13 реализована поддержка пространственного звука с помощью API-интерфейсов , которые позволяют разработчикам приложений определять, позволяет ли текущая комбинация реализации телефона, подключенной гарнитуры и пользовательских настроек воспроизводить многоканальный аудиоконтент с эффектом погружения.
OEM-производители могут обеспечить пространственный аудиоэффект с поддержкой отслеживания положения головы с требуемым уровнем производительности и задержки, используя новую архитектуру аудиоконвейера и интеграцию с фреймворком датчиков. Протокол HID определяет, как подключить устройство отслеживания положения головы по Bluetooth и сделать его доступным как HID-устройство через фреймворк датчиков Android. Дополнительные требования и валидацию см. в разделе «Пространственный звук и отслеживание положения головы» .
Рекомендации на этой странице применимы к решению для пространственного звука, в котором используются новые API для пространственного звука и аудиоархитектура с использованием телефона на базе Android 13 и более поздних версий, а также совместимых гарнитур с датчиком отслеживания положения головы.
Рекомендации по реализации динамических и статических пространственных аудиорежимов
Статическое пространственное аудио не требует отслеживания положения головы, поэтому гарнитура не требует специальных функций. Все проводные и беспроводные гарнитуры поддерживают статическое пространственное аудио.
Реализация API
OEM-производители ДОЛЖНЫ реализовать класс Spatializer
, представленный в Android 12. Реализация должна пройти тесты CTS , представленные для класса Spatializer
.
Надежная реализация API гарантирует, что разработчики приложений, в частности сервисов потоковой передачи мультимедиа, могут рассчитывать на согласованное поведение в экосистеме и выбирать лучший контент в соответствии с возможностями устройства, текущим контекстом рендеринга и предпочтениями пользователя.
Пользовательский интерфейс
После реализации класса Spatializer
убедитесь, что ваш пользовательский интерфейс имеет следующее поведение:
При сопряжении гарнитуры с поддержкой пространственного звука в настройках устройства Bluetooth для этой гарнитуры отображается переключатель пространственного звука :
Рисунок 1. Пространственная аудионастройка.
Настройки доступны при отключенной гарнитуре.
После первоначального сопряжения гарнитуры пространственное аудио по умолчанию включено .
Выбранное пользователем состояние, включенное или выключенное, сохраняется после перезагрузки телефона или отключения и подключения гарнитуры.
Функциональное поведение
Аудиоформаты
Следующие аудиоформаты ДОЛЖНЫ воспроизводиться эффектом Spatializer, если включено пространственное аудио, а устройство рендеринга представляет собой проводную или Bluetooth-гарнитуру:
- AAC, 5.1 каналов
- Raw PCM, 5.1 каналов
Для лучшего пользовательского опыта мы настоятельно рекомендуем поддерживать следующие форматы/конфигурации каналов:
- Dolby Digital Plus
- Каналы 5.1.2, 7.1, 7.1.2, 7.1.4
Воспроизведение стереоконтента
Стереоконтент не должен визуализироваться с помощью механизма эффектов Spatializer, даже если включено пространственное аудио. Если реализация допускает пространственное аудио, она должна предоставлять специальный пользовательский интерфейс, позволяющий пользователю легко включать и выключать эту функцию. При включении пространственного аудио должна быть возможность перехода между воспроизведением пространственного многоканального контента к воспроизведению непространственного стереоконтента без необходимости изменения пользовательских настроек или переподключения или перенастройки гарнитуры. Переход между пространственным аудиоконтентом и стереоконтентом должен происходить с минимальным искажением звука.
Переходы между вариантами использования и параллелизм
Особые случаи использования следует обрабатывать следующим образом:
- Уведомления должны смешиваться с пространственным аудиоконтентом таким же образом, как и с непространственным аудиоконтентом.
- Рингтоны должны быть разрешены для микширования с пространственным аудиоконтентом. Однако по умолчанию механизм аудиофокуса приостанавливает воспроизведение пространственного аудиоконтента во время рингтона.
- При ответе на телефонный звонок или начале видеоконференции воспроизведение пространственного звука должно приостанавливаться. После завершения вызова воспроизведение пространственного звука должно возобновляться с теми же настройками пространственного звука. Перенастройка аудиотракта для перехода из режима пространственного звука в режим разговора должна происходить достаточно быстро и плавно, чтобы не влиять на качество вызова.
Рендеринг через динамики
Поддержка пространственного звучания звука через динамики или трансаурального режима не требуется.
Рекомендации по внедрению отслеживания положения головы
В этом разделе основное внимание уделяется динамическому пространственному звуку, который предъявляет особые требования к гарнитуре.
Пользовательский интерфейс
После внедрения и сопряжения гарнитуры с поддержкой пространственного звука убедитесь, что ваш пользовательский интерфейс выполняет следующие функции:
В настройках устройства Bluetooth, если включен параметр «Пространственный звук» для гарнитуры, в разделе «Пространственный звук» появляется параметр «Отслеживание положения головы» :
Рисунок 2. Настройка пространственного звука и отслеживания положения головы.
Настройка отслеживания положения головы НЕ видна, если отключен пространственный звук.
После первоначального сопряжения гарнитуры отслеживание положения головы по умолчанию включено .
Выбранное пользователем состояние, включенное или выключенное, должно сохраняться после перезагрузки телефона или отключения и повторного подключения гарнитуры.
Функциональное поведение
Отчет о положении головы
- Информация о положении головы в координатах x, y и z, передаваемая с гарнитуры на устройство Android, должна быстро и точно отражать движения головы пользователя.
- Передача данных о положении головы по каналу Bluetooth должна осуществляться в соответствии с протоколом, определенным в HID .
- Гарнитура должна отправлять информацию об отслеживании положения головы на телефон Android только в том случае, если пользователь включил функцию отслеживания положения головы в интерфейсе настроек устройства Bluetooth.
Производительность
Задержка
Задержка отслеживания положения головы определяется как время, проходящее от момента регистрации движения головы инерциальным измерительным блоком (IMU) до обнаружения преобразователями наушников изменения звука, вызванного этим движением. Задержка отслеживания положения головы не должна превышать 150 мс.
Частота сообщений о позе головы
При активном отслеживании положения головы гарнитура должна сообщать о положении головы с рекомендуемой периодичностью примерно 20 мс. Чтобы избежать срабатывания логики обнаружения устаревшего ввода на телефоне во время задержки передачи Bluetooth, максимальное время между двумя обновлениями не должно превышать 40 мс.
Оптимизация мощности
Для оптимизации энергопотребления мы рекомендуем, чтобы реализация использовала механизмы переключения кодеков Bluetooth и выбора режима задержки, предоставляемые аудиоинтерфейсами HAL и Bluetooth-аудио HAL .
Реализации аудиофреймворка и стека Bluetooth в AOSP уже поддерживают сигналы для управления переключением кодеков. Если реализация OEM-производителя использует основной аудиоинтерфейс HAL для передачи звука по Bluetooth, известный как режим разгрузки кодека , OEM-производитель должен обеспечить, чтобы аудиоинтерфейс HAL передавал эти сигналы между аудиоинтерфейсом HAL и стеком Bluetooth.
Переключение кодеков
При включении динамического пространственного звука и отслеживания положения головы используйте кодек с малой задержкой, например Opus . При воспроизведении непространственного аудиоконтента используйте кодек с низким энергопотреблением, например Advanced Audio Coding (AAC) .
При переключении кодеков соблюдайте следующие правила:
- Отслеживайте только активность следующих выходных аудиопотоков HAL:
- Выделенный выход пространственного преобразователя
- Специфические медиа-потоки, такие как глубокая буферизация или сжатое воспроизведение с выгрузкой
Когда все соответствующие потоки находятся в режиме ожидания и запускается поток Spatializer, запустите поток Bluetooth, установив параметр
isLowLatency
в значениеtrue
, чтобы указать кодек с низкой задержкой.Когда все соответствующие потоки находятся в режиме ожидания и начинается поток мультимедиа, запустите поток Bluetooth , установив параметр
isLowLatency
на значениеfalse
, чтобы указать кодек с низким энергопотреблением.Если медиапоток активен и запускается поток Spatializer, перезапустите поток Bluetooth, установив параметр
isLowLatency
в значениеtrue
.
Что касается гарнитуры, она должна поддерживать как декодеры с малой задержкой, так и маломощные декодеры, а также реализовывать стандартный протокол выбора кодека.
Регулировка режима задержки
Регулировка режима задержки происходит при выборе кодека с низкой задержкой.
В зависимости от того, включено ли отслеживание положения головы, регулировка режима задержки использует доступные механизмы для уменьшения или увеличения задержки, чтобы достичь наилучшего компромисса между задержкой, энергопотреблением и качеством звука. При включении пространственного звука и отслеживании положения головы выбирается режим с низкой задержкой. При включении пространственного звука и отключении отслеживании положения головы выбирается режим свободной задержки. Регулировка задержки обеспечивает значительную экономию энергии и повышает надежность аудиоканала Bluetooth, когда запрашивается только статическое пространственное аудио. Наиболее распространённый механизм регулировки задержки — это уменьшение или увеличение размера буфера джиттера в Bluetooth-гарнитуре.
Информацию о регулировке режима задержки для звука LE см. в разделе Отслеживание положения головы при использовании звука LE.