Bluetooth Low Energy Audio

Bluetooth с низким энергопотреблением (LEA) позволяет пользователям слушать аудио высокого качества, не беспокоясь о заряде батареи, и легко переключаться между разными сценариями использования. В Android 13 (уровень API 33) встроена поддержка LEA.

Пока доля рынка устройств, поддерживающих LE Audio, не вырастет, большинство гарнитур с поддержкой LE Audio будут работать в двух режимах. Пользователи должны иметь возможность подключать и настраивать оба транспорта на своих двухрежимных гарнитурах.

Примеры использования

Интеграция с LEA может быть полезна в следующих случаях:

  • Обмен аудио. Пользователи могут одновременно передавать несколько аудиопотоков на одно или несколько устройств вывода звука. Аудио синхронизируется между исходным устройством и подключенными устройствами.

  • Трансляция аудио. Пользователи могут транслировать аудио друзьям и близким, а также подключаться к общедоступным трансляциям, чтобы получать информацию, развлекаться или использовать специальные возможности.

  • Поддержка аудиокодека LC3. Это аудиокодек по умолчанию, который заменяет кодек SBC, используемый для A2DP (медиа), и mSBC в HFP (голос). LC3 – более эффективный, настраиваемый и качественный кодек.

  • Улучшенная дискретизация звука. Гарнитуры могут поддерживать высокое качество звука при использовании микрофонов. При использовании микрофонов Bluetooth Classic снижает качество звука. При использовании BLE Audio частота дискретизации входного и выходного сигнала может достигать 32 кГц.

  • Стереомикрофон. Наушники могут записывать аудио с помощью стереомикрофонов для улучшения пространственного звучания.

  • Поддержка профиля слухового аппарата (HAP). HAP предлагает пользователям больше возможностей, чем предыдущие протоколы ASHA. Пользователи могут использовать слуховые аппараты для телефонных звонков и приложений VoIP.

  • Поддержка протокола Enhanced Attribute (EATT). EATT позволяет разработчикам отправлять несколько команд одновременно на подключенные наушники.

Основные сценарии

Существует четыре основные категории вариантов использования:

  1. Разговорные приложения. Приложения Телефон и VoIP, которым требуется маршрутизация с низкой задержкой, обеспечивают высокое качество звука и меньший расход заряда батареи.

  2. Игры. Одновременная работа микрофона и воспроизведение звука высокой точности позволяют передавать на наушники аудио высокого качества. Игровое приложение может получить доступ к аудиовходу BLE, когда игра подготовит микрофон Bluetooth к использованию. Когда игрок начнет живой разговор с другим игроком, мобильная игра сможет использовать данные микрофона без задержки.

  3. Мультимедиа. Мультимедийные приложения могут задавать устройство по умолчанию для аудиоменеджера. Пользователь может переопределить это, изменив устройство по умолчанию в настройках системы.

  4. Специальные возможности. Слуховые аппараты с поддержкой BLE Audio теперь могут использовать микрофон, что позволяет пользователям не снимать их во время звонков.

API и методы BLE Audio

Для поддержки наушников BLE Audio требуются следующие API и методы:

AudioManager

  • setCommunicationDevice() выбирает аудиоустройство, которое должно использоваться для связи, например для голосовых или видеовызовов. Этот метод может использоваться приложениями голосового или видеочата для выбора аудиоустройства, отличного от выбранного платформой по умолчанию. Этот API заменяет следующие устаревшие API: startBluetoothSco(), stopBluetoothSco() и setSpeakerphoneOn().
  • clearCommunicationDevice() вызывается после того, как приложение завершает звонок или сеанс, чтобы обеспечить удобство работы при переключении между разными приложениями.

BluetoothProfile

  • BluetoothLeAudio управляет сервисом Bluetooth через прокси-объект.

Telecom InCallService

  • InCallService#requestCallEndpointChange() заменяет устаревшие API InCallService.setAudioRoute() и InCallService.requestBluetoothAudio(), позволяя приложениям запрашивать маршрутизацию аудио на определенное устройство CallEndpoint. Клиенты не должны определять собственный CallEndpoint при запросе изменения. Вместо этого новая конечная точка должна быть одной из допустимых конечных точек, предоставляемых InCallService.onAvailableCallEndpointsChanged(java.util.List).
  • CallEndpoint.TYPE_BLUETOOTH направляет аудиопоток через Bluetooth.
  • Вышеупомянутые API InCallService предназначены для использования в приложении "Телефон" по умолчанию на устройствах Android или других интерфейсах для звонков, например носимых устройствах, автомобилях или других устройствах Bluetooth, которые могут влиять на маршрутизацию аудио.

Telecom CallControl

Информация об аудиоустройстве

  • AudioDeviceInfo.TYPE_BLE_HEADSET описывает тип аудиоустройства как устройство LEA. Используется для определения того, является ли аудиоустройство устройством LEA.

Запись аудио

  • setPreferredDevice() задает устройство по умолчанию для маршрутизации аудио. Пользователь может переопределить это в системных настройках.

Bluetooth-адаптер

  • isLeAudioSupported() возвращает константу @BluetoothStatusCodes (FEATURE_SUPPORTED, FEATURE_NOT_SUPPORTED или код ошибки), которая указывает, поддерживает ли аппаратное обеспечение устройства LE Audio.
  • isLeAudioBroadcastSourceSupported() возвращает константу @BluetoothStatusCodes (FEATURE_SUPPORTED, FEATURE_NOT_SUPPORTED или код ошибки), которая указывает, поддерживает ли аппаратное обеспечение устройства источник трансляции LE Audio.

Руководства по вариантам использования

Ниже приведены рекомендации по реализации LEA для конкретных сценариев использования.

Приложения для голосовой связи

Приложения для голосовой связи могут управлять маршрутизацией аудио и состоянием устройства самостоятельно или с помощью Telecom API, который делает это автоматически.

Эти два решения позволяют быстро и легко управлять маршрутизацией аудио и переключаться между устройствами Bluetooth. Дополнительную информацию можно найти в руководстве по управляемым вызовам Telecom.

Приложения для записи аудио

  • Media Recorder. Теперь при записи аудио с помощью Media Recorder можно записывать стерео, если Bluetooth-наушники поддерживают LEA. Ознакомьтесь с руководством по записи аудио.

Рекомендации по выбору гарнитуры

По мере того как на рынке появляется все больше наушников с поддержкой LEA, мы обнаруживаем проблемы, которые ухудшают удобство использования. Спецификация не охватывает все эти проблемы. В таблице ниже приведены рекомендации, которые помогут производителям наушников LEA улучшить качество звука для пользователей Android.

Описание Контекст
Поддержка Cross Transport Key Derivation (CTKD) для двухрежимных гарнитур:
  • Поддержка вывода ключей для связывания Classic-to-LE и LE-to-Classic.
Большинство новых гарнитур LEA будут двухрежимными, пока доля рынка устройств-источников LEA не вырастет. Важно, чтобы пользователи могли без проблем подключать двухрежимные гарнитуры и настраивать оба способа передачи данных. Это также важно для работы функции быстрого подключения Google.

Поддерживайте целевые объявления, если хотите, чтобы наушники LEA надежно подключались к исходным устройствам.

Наушники с поддержкой LE Audio должны использовать TA для запроса входящего подключения от центральных устройств.

Будет добавлено в предстоящую версию BT SIG.

В отличие от модели пейджинга BR/EDR, в которой подключение может быть инициировано телефоном или гарнитурой, подключение в LEA должно быть инициировано центральным устройством. Сейчас многие гарнитуры не используют TA, поэтому центральное устройство может не подключиться к периферийному, если не добавить его в белый список. Однако обходной путь с белым списком может помешать гарнитуре подключиться к другому центральному устройству. Поэтому важно, чтобы гарнитуры LEA правильно поддерживали TA, чтобы центральное устройство могло надежно повторно подключаться без обходных путей, которые могут нарушить многоточечные соединения.
Улучшенная видимость наушников с двумя режимами
  • Основной наушник (компонент BR/EDR) должен передавать объявления, используя свой общедоступный адрес, и разрешать сканирование запросов и страниц, а его название должно быть доступно через EIR. Также необходимо установить бит 14 LE Audio в значение 1 в основных классах обслуживания класса устройства (CoD).
  • Основной наушник – компонент LE. Основной наушник должен выполнять объявление с возможностью подключения и обнаружения (ограниченное или общее), используя тот же общедоступный адрес и полное локальное имя, что и компонент BR/EDR. При этом категория внешнего вида должна соответствовать типу удаленного устройства. Ожидается, что центральное устройство будет использовать эту информацию для настройки своего интерфейса и правил маршрутизации аудио.
  • Дополнительный наушник (только LE). Дополнительный наушник должен передавать объявление с возможностью подключения и без возможности обнаружения. При этом в качестве категории внешнего вида должна быть указана категория, соответствующая типу удаленного устройства. Ожидается, что центральное устройство будет использовать эту информацию для настройки своего интерфейса и правил маршрутизации аудио.

    Наушники должны динамически выбирать ведущее устройство из группы CSIP. Если наушник поддерживает два режима, то основное устройство также должно поддерживать два режима, чтобы функции LE и Classic работали корректно после подключения.

Это предотвращает появление дублирующихся записей в настройках Bluetooth, которые могут запутать пользователей и усложнить подключение наушников LEA.

Динамический выбор лидера особенно важен для двухрежимных устройств, которые подключаются по очереди. Например, если при первоначальном подключении доступен только один наушник, он должен представлять себя как устройство с двумя режимами. Когда пользователь позже подключит второй наушник, ему нужно будет только подключить компонент LE, и CSIP обеспечит их группировку на Android.

При подключении рекомендуется использовать идентификационный адрес, поскольку компонент BR/EDR уже предоставляет общедоступный адрес устройства находящимся поблизости устройствам.

Поддержка протокола расширенных атрибутов (EATT). Уменьшает задержку при подключении и установлении связи.
Поддержка надежного кеширования GATT. Уменьшает задержку подключения, особенно для наушников TWS.
Поддержка субрейтинга подключений. Это позволяет более гибко планировать передачу пакетов и экономить заряд батареи.
Убедитесь, что во время предварительной и последующей обработки при воспроизведении и записи конвейер обработки сигналов может работать на частотах 16, 24, 32 и 48 кГц, а также поддерживает более высокие частоты. Использует преимущества более высоких частот дискретизации, поддерживаемых для путей захвата вызовов LEA или VoIP и воспроизведения мультимедиа.
Поддержка LE Power Control. Улучшенное управление питанием

Поддержка типов контекста

Описание Контекст
Используйте все типы контекста, указанные в разделе 6.12.3 Assigned Numbers, если гарнитура поддерживает их. Например, если тип контекста Game не поддерживается, Android будет передавать звуки игры. Обратите внимание, что тип контекста "Не указано" не означает "любой тип контекста" и не включает неподдерживаемые типы контекста.

Когда центральное устройство взаимодействует с ASCS периферийного устройства, периферийное устройство должно подключиться к MCS и TBS центрального устройства.

Центральное устройство не всегда может использовать LE Audio для потоковой передачи, поскольку оно может вернуться к использованию A2DP или HFP. Периферийное устройство может использовать взаимодействие ASCS как индикатор того, будет ли центральное устройство использовать LE Audio для потоковой передачи.

Примеры взаимодействий ASCS: чтение, запись и регистрация для получения уведомлений.

Рекомендации по выбору передатчика Auracast

В этом разделе приведены рекомендации по настройке передатчиков Auracast.

Периодические трансляции

Аудиообъявления в общественных местах, например на вокзалах, часто звучат с перерывами и разделены долгими периодами тишины. Непрерывная трансляция тишины или фонового звука между объявлениями приводит к напрасному расходу заряда батареи приемника и мешает пользователям слушать основной аудиопоток, например локальные медиафайлы или другой активный поток Auracast.

Чтобы пользователям было удобнее, мы рекомендуем придерживаться следующих правил обработки прерывистых трансляций:

Определения

  • Интересующий звук. Основной информационный контент, предназначенный для пользователя, например объявление о выходе на посадку или прибытии поезда.
  • Фоновое аудио. Тишина, статический шум или фоновая музыка между фрагментами основного аудио.
  • Прерывистая трансляция. Трансляция, в которой чередуются периоды с аудиоконтентом, представляющим интерес, и периоды с фоновым аудио или без аудио.

Как выявить прерывистые трансляции

Чтобы обозначить трансляцию как прерывистую, вещатель должен включить структуру LTV (Length-Type-Value) метаданных Audio_Active_State [1] в двух местах:

  1. Структура BASE, метаданные уровня 2 (периодические объявления) [2]
  2. Метаданные объявления об общедоступной трансляции (расширенные объявления) [3]

Чтобы помочь получателю идентифицировать прерывистую трансляцию и решить, воспроизводить ли поток, вещатель также должен точно настроить структуру LTV метаданных Streaming_Audio_Context [1].

Как определить, что аудио представляет интерес

Чтобы динамически сигнализировать о том, содержит ли прерывистая трансляция интересующий аудиосигнал в любой момент времени, передатчик использует структуры LTV метаданных Audio_Active_State.

  • Метаданные уровня 2 структуры BASE. Значение 0x01 указывает, что BIS в подгруппе в настоящее время содержат Audio-of-Interest.
  • Метаданные общедоступного объявления. Значение 0x01 указывает, что по крайней мере один из BIS в BIG содержит аудио, представляющее интерес.

Значения LTV метаданных Audio_Active_State должны быть установлены на 0x01 незадолго до передачи Audio-of-Interest, чтобы сканирующее устройство могло синхронизироваться с источником общедоступной трансляции. и 0x00 – вскоре после ее окончания.

Использование контекста потокового аудио

Предоставление явного контекста помогает фреймворку Android и принимающим устройствам определять приоритеты входящих потоков. Например, система громкой связи может установить для Streaming_Audio_Context тип Instructional, чтобы объявления могли прерывать воспроизведение локального медиаконтента на приемнике и плавно возобновлять его после этого.

Ссылки

[1] Bluetooth Assigned Numbers, https://www.bluetooth.com/specifications/assigned-numbers/
[2] Basic Audio Profile, https://www.bluetooth.com/specifications/specs/basic-audio-profile-1-0-3/
[3] Public Broadcast Profile, https://www.bluetooth.com/specifications/specs/public-broadcast-profile-1-0-2/