Аудио переключатель

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

Принципы UX

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

Роли

Audio Switch Seeker : Seeker — это устройство-источник звука (например, телефон или планшет), которое ищет ближайшую гарнитуру для подключения, когда это возможно.

Поставщик аудиопереключателя : обычно поставщиком является гарнитура, сообщающая о своем присутствии и состоянии соединения, чтобы Искатели могли принять решение о переключении.

Обзор требований

Для достижения умного переключения Провайдеры должны соблюдать следующие требования:

Имя Описание Требования Обязательный?
Сканирование страницы Принять новый запрос на соединение от другого Искателя при наличии существующего соединения.
Для одноточечных провайдеров:
  • Исходное устройство-источник автоматически приостанавливает воспроизведение звука при отключении поставщика.
Для многоточечных провайдеров:
  • Если доступное соединение все еще существует, оно примет запрос на соединение.
  • Если полоса пропускания соединения заполнена, отключите соединение, которое использовалось реже всего (например, в течение длительного времени не было аудиособытий), и примите новый входящий запрос.
Для повышения производительности необходим режим сканирования страниц с низкой задержкой (интервал сканирования не должен превышать 640 мс).
Чтобы найти компромисс между временем автономной работы и производительностью переключения, Провайдер может иметь режим сканирования страниц по умолчанию для большинства случаев (режим пониженного энергопотребления, интервал сканирования не должен превышать 1280 мс). Но режим с низкой задержкой необходимо использовать в следующих ситуациях:
  • Первые 30 секунд включения
  • Первые 30 секунд отсутствия соединения или пейджинга
  • Первые 30 секунд бездействия устройства
Обязательный
История подключений Чтобы вернуться к предыдущему соединению и возобновить воспроизведение, если это возможно.
Обратное переключение будет инициировано связью через API потока сообщений.
Событие приостановки звука должно быть включено в запись для возобновления воспроизведения, если это применимо.
Ведение истории подключений и внедрение API потока сообщений. Обязательный
Статус подключения Искателям необходимо принять решение о переключении соединения. Статус соединения включает в себя:
  • Состояние соединения
  • Тип звука активного соединения
  • Информация об аккаунте активного соединения
  • Подключенное устройство(а)
Включите статус соединения в рекламу BLE и поток сообщений. Обязательный
Изменение возможностей среды выполнения Переключение звука можно включить путем обновления прошивки поставщика, поэтому возможности необходимо синхронизировать между Seeker и поставщиком во время выполнения. Внедрите API-интерфейсы потока сообщений для доступа к возможностям среды выполнения. Обязательный
Настраиваемые правила переключения Позвольте Seeker настроить приоритет между существующей активной потоковой передачей звука и новыми запросами потоковой передачи звука через настройки пользовательских предпочтений.
Например, переключатель аудиопереключателя Seeker может предоставлять настройки пользовательского интерфейса, позволяющие пользователям включать/отключать автоматическое переключение между потоковой передачей мультимедиа и вызовом.
Переключатель звука Seeker установит и получит правило переключения через поток сообщений.
Только многоточечные провайдеры.
Внедрите API-интерфейсы потока сообщений, чтобы обеспечить возможность настройки правил переключения между подключенными устройствами.
Необязательный
Активное переключение устройств Позвольте Audio Switch Seeker имитировать переключение звука между подключенными устройствами.
На стороне Audio Switch Seeker может быть пользовательский интерфейс, позволяющий пользователям легко переключаться между подключенными устройствами.
Только многоточечные провайдеры.
Внедрите API-интерфейсы потока сообщений для Audio Switch Seeker, чтобы определить активный источник звука между подключенными устройствами.
Обязательный
Уведомление о многоточечном переключении Пусть Искатель переключателя аудио покажет уведомление о переключении. Только многоточечные провайдеры.
Внедрите API-интерфейсы потока сообщений для уведомления подключенных искателей аудиокоммутатора о выполнении многоточечного переключения.
Обязательный

Рекламная нагрузка

Провайдер должен включить текущий статус подключения в рекламу, созданную на основе данных учетной записи Fast Pair, описанных в разделе «Реклама: когда невозможно обнаружить» .

Обратите внимание, что версия таблицы 4.2 — 0x1.

Поле состояния соединения

Октет Тип данных Описание Ценить Обязательный?
0 uint8 Длина и тип поля
0bLLLLTTTT
  • L = длина состояния соединения в байтах
  • Т = тип
0bLLLL0101
  • длина: варьируется
  • тип = 0b0101
Обязательный
1 uint8 Состояние соединения
0bHAFRSSSS
  • H = при обнаружении головы
  • A = доступность соединения
  • F = режим фокусировки
  • R = автоматическое повторное подключение
  • S = состояние соединения
0bHAFRSSSS
Обязательный
2 uint8 Пользовательские данные
В настоящее время он содержит только тип контента, который используется для описания использования текущего потокового аудио. Искатель отправит его Провайдеру.
Значение отправляется от Искателя текущей активной потоковой передачи Поставщику через поток сообщений. 0, если текущая активная потоковая передача не от Seeker. Обязательный
3 - вар Растровое изображение подключенных устройств
Растровое изображение, показывающее, какие устройства в данный момент подключены к поставщику. Все связанные устройства располагаются по порядку: один бит соответствует одному связанному устройству. Длина будет зависеть от количества подключенных устройств Провайдера.
Отображенный бит установлен в 1, если устройство в данный момент подключено к провайдеру, в противном случае — в 0.
Подробности см. в разделе Растровое изображение подключенного устройства.
Необязательный

Таблица 4.1: Необработанные данные поля состояния соединения

Флаги подключения
Состояние соединения
Растровое изображение подключенного устройства

Чтобы избежать нежелательного переключения соединения, Seeker может потребоваться знать, к какому устройству(ам) в данный момент подключена гарнитура. Например, когда гарнитура подключена к телефону, пользователь не хочет, чтобы его отвлекало переключение соединения, когда кто-то из членов его семьи запускает YouTube на планшете.

Обратите внимание, что это растровое изображение является анонимным, Искатель не может знать, какие другие устройства связаны с Поставщиком. Например, возьмем 5 связанных устройств:

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

Случайная разрешимая реклама

Чтобы избежать отслеживания и обеспечить соблюдение конфиденциальности пользователей, Поставщик должен повернуть и зашифровать поле с помощью ключа учетной записи с использованием AES-CTR:

 encrypted_connection_status_field = connection_status_raw_data ^ AES(Key, IV)

где

  1. Ключ получается из используемого ключа учетной записи , который определен в следующем разделе.

    • Ключ генерируется функцией HKDF, IETF RFC 5869, с использованием хеш-функции SHA-256.

        Key = HKDF(account_key, NULL, UTF8("SASS-RRD-KEY"),16)
      
    • Здесь провайдер должен использовать исходный ключ учетной записи, т.е. первый байт ключа равен 0x04 и не включен в шаблон использования.

  2. IV (начальный вектор) — это 2-байтовая соль данных ключа учетной записи с заполнением нулями, т. е. IV — это concat (соль, 14-байтовые НУЛИ).

  3. Необработанные данные о состоянии соединения определены в таблице 4.1 . Если состояние соединения изменяется, соль и RPA должны быть повторно созданы в один и тот же период времени объявления.

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

Реклама BLE будет структурирована следующим образом:

Октет Тип данных Описание Ценить Обязательный?
0 uint8 Версия и флаги 0x10 Обязательный
1 - т Ключевые данные учетной записи варьируется Обязательный
т+1 - с Данные батареи варьируется Необязательный
s+1 - вар Случайные разрешимые данные варьируется Обязательно, если список ключей учетной записи не пуст,
в противном случае исключено.

Таблица 4.2: Объявление BLE со случайными разрешимыми данными

Случайные разрешимые данные содержат:

Октет Тип данных Описание Ценить Обязательный?
0 uint8 Длина и тип поля
0bLLLLTTTT
  • L = длина зашифрованных данных
  • Т = тип
0bLLLL0110
  • длина: варьируется
  • тип = 0b0110
Обязательный
1 - вар Зашифрованные данные варьируется Обязательный

Таблица 4.2.1: Случайные разрешимые данные

Например, если случайные разрешимые данные содержат зашифрованное поле состояния соединения, расшифрованным результатом будет поле состояния соединения .

Чтобы предотвратить несанкционированный доступ, приведенные выше данные ключа учетной записи следует слегка изменить, когда случайные разрешимые данные включены в рекламное объявление. Обычно при построении фильтра ключа учетной записи значение V создается путем объединения фильтра ключа учетной записи с солью. Вместо этого, когда также объявляются случайные разрешимые данные, значение V должно быть построено как:

 V = concat(account_key, salt, random_resolvable_data)

Если объявляются как данные батареи, так и случайные разрешимые данные, V следует построить как:

 V = concat(account_key, salt, battery_data, random_resolvable_data)

Используется ключ учетной записи

Переключение соединения осуществляется на основе учетной записи, поэтому поставщик должен включить информацию об учетной записи текущего соединения в объявление BLE. Если текущее подключенное устройство является искателем аудиопереключателя, поставщик должен иметь возможность получить ключ учетной записи, связанный с этим искателем, и использовать этот ключ учетной записи для шифрования поля состояния соединения. Если подключенный источник звука не является переключателем Audio Seeker, поставщику следует использовать ключ учетной записи, который использовался последним.

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

  1. 0b00000100
    Этот ключ учетной записи не используется.
    Это значение по умолчанию (см. Ключ учетной записи ).
  2. 0b00000101
    Этот ключ учетной записи является самым последним использованным ключом учетной записи.
    Поле статуса подключения шифруется этим ключом учетной записи. Информация о ключе учетной записи о текущем состоянии подключения отсутствует. Это может означать, что устройства не подключены или подключенное устройство не является устройством поиска аудиопереключателя.
  3. 0b00000110
    Этот ключ учетной записи является используемым ключом учетной записи.
    Поле статуса подключения шифруется этим ключом учетной записи, и текущее подключенное устройство связано с этим ключом учетной записи.

Схема полезной нагрузки аудиопереключателя

На рисунке ниже показана схема полезной нагрузки аудиопереключателя.

Сообщения

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

Имя группы сообщений Ценить
Аудио переключатель 0x07

Дополнительные сведения для каждого кода сообщения приведены в следующих разделах.

Кодовое имя сообщения Ценить Только многоточечный Отправитель Ответчик Шифровать MAC ПОДТВЕРЖДЕНИЕ
Получите возможность переключателя звука 0x10 Н Оба Оба, через код 0x11 Н Н Н
Возможность уведомления о переключателе звука 0x11 Н Оба Оба Н Да Да
Установить многоточечное состояние 0x12 Да Искатель Поставщик Н Да Да
Установить предпочтения переключения 0x20 Да Искатель Поставщик Н Да Да
Получить предпочтения переключения 0x21 Да Искатель Провайдер, по коду 0x22 Н Н Н
Уведомить о переключении предпочтений 0x22 Да Поставщик Искатель Н Н Н
Переключить активный источник звука (на подключенное устройство) 0x30 Да Искатель Поставщик Н Да Да
Переключиться обратно (на отключенное устройство) 0x31 Н Искатель Поставщик Н Да Да
Уведомить о событии многоточечного переключения 0x32 Да Поставщик Искатель Н Н Н
Получить статус подключения 0x33 Да Искатель Провайдер, через код 0x34 Н Н Н
Уведомлять о состоянии соединения 0x34 Да Поставщик Искатель Да Н Н
Уведомить аудиопереключатель инициировал соединение 0x40 Н Искатель Поставщик Н Да Да
Укажите используемый ключ учетной записи 0x41 Н Искатель Поставщик Н Да Да
Отправить пользовательские данные 0x42 Н Искатель Поставщик Н Да Да
Установить цель отброшенного соединения 0x43 Да Искатель Поставщик Н Да Да

Таблица 4.3: Сообщения переключения звука

MAC-адрес аудиопереключателя. Сообщения.

Чтобы обеспечить аутентификацию сообщения, все сообщения переключения аудио с дополнительными данными, отправляемые от Искателя к Поставщику, требуют кода аутентификации сообщения . Когда получено сообщение с MAC, его следует подтвердить , чтобы Искатель знал, отреагировал ли Провайдер на сообщение.

Если аутентификация сообщения прошла успешно, Провайдер должен отправить ACK для сообщения:

Октет Тип данных Описание Ценить
0 uint8 Подтверждение 0xFF
1 uint8 ПОДТВЕРЖДЕНИЕ 0x01
2–3 uint16 Дополнительная длина данных варьируется
4 uint8 Аудио переключатель 0x07
5 uint8 Код сообщения о переключении звука варьируется
6 - с Дополнительная информация варьируется

В случае неудачи Провайдер должен отправить NAK для сообщения:

Октет Тип данных Описание Ценить
0 uint8 Подтверждение 0xFF
1 uint8 НАК 0x02
2–3 uint16 Дополнительная длина данных 0x0003
4 uint8 Причина ошибки варьируется
5 uint8 Аудио переключатель 0x07
6 uint8 Код сообщения о переключении звука варьируется

Обратите внимание: если поставщик является отправителем, MAC не требуется.

Получите возможность переключателя звука

Как поставщик аудиопереключателя, так и искатель могут проверить, поддерживает ли подключенный искатель/провайдер Fast Pair переключатель аудио или нет, используя приведенное ниже сообщение:

Октет Тип данных Описание Ценить
0 uint8 Аудио переключатель 0x07
1 uint8 Получите возможность переключателя звука 0x10
2–3 uint16 Дополнительная длина данных 0

Таблица 4.3.1.0: Получение возможностей переключателя звука

Возможность уведомления о переключателе звука

Получив возможность получения кода сообщения переключателя аудио , искатель/поставщик переключателя аудио ответит одним из следующих флагов:

Октет Тип данных Описание Ценить
0 uint8 Аудио переключатель 0x07
1 uint8 Возможность уведомления о переключателе звука 0x11
2–3 uint16 Дополнительная длина данных 20, если это отправлено Искателем
4, если это отправлено провайдером
4–5 uint16 Код версии аудиопереключателя Ненулевое значение означает, что он поддерживает переключатель звука. Код текущей версии (с усилением безопасности) — 0x0102.
0x0000 или отсутствие ответа в течение 1 секунды означает, что переключатель звука не поддерживается на этом устройстве.
6–7 флаги Флаги возможности переключения звука провайдера
Если это отправлено Seeker, эти два байта следует игнорировать.
варьируется
См. Флаги возможности переключения звука.
8–15 Номер сообщения
Требуется только тогда, когда это отправлено Искателем
варьируется
16 - 23 Код аутентификации сообщения
Требуется только тогда, когда это отправлено Искателем
варьируется

Таблица 4.3.1.1: Возможность уведомления переключателя звука

Флаги возможности переключения звука
  1. Бит 0 (октет 6, старший бит): состояние переключателя звука.

  2. Бит 1: возможность многоточечной настройки

  3. Бит 2: текущее состояние многоточечного режима

  4. Бит 3: обнаружение попадания на голову

  5. Бит 4: текущее состояние обнаружения на головке

  6. Все остальные биты зарезервированы, по умолчанию 0.

Установить многоточечное состояние

В устройствах Audio Switch Seekers мы можем предоставить пользователям возможность включать и выключать функцию многоточечной связи. Искатель установит многоточечное состояние для провайдера, используя следующее сообщение:

Октет Тип данных Описание Ценить
0 uint8 Аудио переключатель 0x07
1 uint8 Установить многоточечное состояние 0x12
2–3 uint16 Дополнительная длина данных 17
4 uint8 Многоточечное состояние 0: отключить многоточечное соединение
1: включить многоточечное соединение
5–12 Номер сообщения варьируется
13–20 Код аутентификации сообщения варьируется

Таблица 4.3.1.2: Настройка многоточечного состояния

Установить предпочтения переключения

Переключатель аудио Искатели могут изменить предпочтения переключения многоточечного соединения и установить их для провайдера, используя следующее сообщение:

Октет Тип данных Описание Ценить
0 uint8 Аудио переключатель 0x07
1 uint8 Установить предпочтения переключения 0x20
2–3 uint16 Дополнительная длина данных 18
4 флаги Переключение предпочтений варьируется
См. флаг предпочтения многоточечного переключения.
5 Расширенные настройки переключения
Этот байт зарезервирован, значение по умолчанию — 0.
варьируется
6–13 Номер сообщения варьируется
14–21 Код аутентификации сообщения варьируется

Таблица 4.3.2.0: Установка предпочтений переключения

Флаг предпочтения многоточечного переключения

Получить предпочтения переключения

Искатели переключения аудио могут запросить у провайдера предпочтения переключения многоточечного соединения, используя следующее сообщение:

Октет Тип данных Описание Ценить
0 uint8 Аудио переключатель 0x07
1 uint8 Получить конфигурацию переключения 0x21
2–3 uint16 Дополнительная длина данных 0

Таблица 4.3.2.1: Получение предпочтений переключения

Уведомить о переключении предпочтений

Октет Тип данных Описание Ценить
0 uint8 Аудио переключатель 0x07
1 uint8 Уведомить о переключении предпочтений 0x22
2–3 uint16 Дополнительная длина данных 2
4 флаги Переключение флагов предпочтений варьируется
См. флаг предпочтения многоточечного переключения.
5 Расширенные настройки переключения
Этот байт зарезервирован, значение по умолчанию должно быть 0.
варьируется

Таблица 4.3.2.2: Предпочтение переключения уведомлений

Переключить активный источник звука (на подключенное устройство)

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

Октет Тип данных Описание Ценить
0 uint8 Аудио переключатель 0x07
1 uint8 Переключить активный источник звука (на подключенное устройство) 0x30
2–3 uint16 Дополнительная длина данных 17
4 флаги Переключение флагов событий активного источника звука варьируется
См. событие переключения активного источника звука.
5–12 Номер сообщения варьируется
13–20 Код аутентификации сообщения варьируется

Таблица 4.3.3.0: Переключение активного источника звука (на подключенное устройство)

Переключение события активного источника звука

Искатели переключения аудио не всегда могут правильно знать свое состояние, поэтому поставщик может получить сообщение «переключиться на это устройство», когда Искатель уже является активным устройством. В этом случае, чтобы отобразить правильный пользовательский интерфейс на Seeker, поставщик может отправить NAK с причиной ошибки 0x4 — действие резервного устройства.

Переключиться обратно (на отключенное устройство)

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

Октет Тип данных Описание Ценить
0 uint8 Аудио переключатель 0x07
1 uint8 Переключиться обратно (на отключенное устройство) 0x31
2–3 uint16 Дополнительная длина данных 17
4 uint8 Переключить событие назад варьируется
0x01: переключиться обратно
0x02: переключиться назад и возобновить воспроизведение.
5–12 Номер сообщения варьируется
13–20 Код аутентификации сообщения варьируется

Таблица 4.3.3.1: Переключиться обратно (на отключенное устройство)

Для многоточечных поставщиков, чтобы выполнить переключение соединения, поставщик может разорвать соединение с одним устройством-источником звука и приостановить аудиосеанс на другом источнике звука. Например, предположим, что многоточечная гарнитура подключена к планшету и третьему поддерживаемому устройству переключения звука. Пользователь смотрит видео на планшете, когда на его телефон поступает входящий звонок. Телефон активирует переключатель подключения на гарнитуре, поэтому для подключения к телефону необходимо разорвать соединение третьего устройства, а также приостановить сеанс мультимедиа на планшете, чтобы получить рингтон с телефона. Если пользователь отклоняет вызов, телефон может попросить гарнитуру «переключиться обратно и возобновить воспроизведение». После получения этого запроса гарнитура должна повторно подключиться к третьему устройству и возобновить воспроизведение приостановленного видео на планшете.

Уведомить о событии многоточечного переключения

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

Октет Тип данных Описание Ценить
0 uint8 Аудио переключатель 0x07
1 uint8 Уведомить о событии многоточечного переключения
Провайдер должен отправлять его на каждый коммутатор, включая Искатель переключателя аудио на Искатель, не поддерживающий аудио, Искатель, не поддерживающий аудио, на Искатель переключателя аудио и Искатель переключателя аудио на Искатель переключателя аудио.
0x32
2–3 uint16 Дополнительная длина данных варьируется
4 uint8 Причина переключения варьируется
0x00: Не указано
0x01: потоковая передача A2DP
0x02: ОФП
5 uint8 Целевое устройство варьируется
0x01: это устройство
0x02: другое подключенное устройство
6 - н utf8 Имя целевого устройства
если целевым устройством является Искатель аудиопереключателя, используйте имя, которому отправлен Искатель, в противном случае используйте имя BT, если это неприменимо, используя последние 2 байта его адреса.
варьируется

Таблица 4.3.3.2: Уведомление о событии многоточечного переключения

Получить статус подключения

Искатель может получить текущий статус соединения от Провайдера:

Октет Тип данных Описание Ценить
0 uint8 Аудио переключатель 0x07
1 uint8 Получить статус подключения 0x33
2–3 uint16 Дополнительная длина данных 0

Таблица 4.3.3.3: Получение статуса подключения

При получении этого сообщения Провайдер должен ответить кодом сообщения 0x34, уведомив о состоянии соединения .

Уведомлять о состоянии соединения

Как определено в рекламной полезной нагрузке BLE, для многоточечных провайдеров, если статус соединения меняется, за исключением изменения рекламного пакета, провайдер должен также уведомить подключенных искателей, которые используют тот же ключ учетной записи, об изменении. Если Провайдер подключен к Искателю переключателя аудио и Искателю, не являющемуся аудиопереключателем, если Искатель, не являющийся аудиопереключателем, активен, Провайдер также должен уведомить подключенный Искатель переключателя аудио о состоянии соединения (используя ключ учетной записи Искателя).

Октет Тип данных Описание Ценить
0 uint8 Аудио переключатель 0x07
1 uint8 Уведомлять о состоянии соединения 0x34
2–3 uint16 Дополнительная длина данных варьируется
4 uint8 Флаг активного устройства варьируется
0x00: этот Искатель пассивен, и активное устройство использует тот же ключ учетной записи.
0x01: этот Искатель является активным устройством.
0x02: этот искатель является пассивным, а активное устройство не является искателем переключателя аудио.
5 - н Статус зашифрованного соединения варьируется
n+1 - n+8 Номер сообщения варьируется

Таблица 4.3.3.4: Уведомление о состоянии соединения

Зашифрованное сообщение о состоянии соединения

 encrypted_connection_status = connection_status_raw_data ^ AES(Key, IV)

где:

Уведомить аудиопереключатель инициировал соединение

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

Октет Тип данных Описание Ценить
0 uint8 Аудио переключатель 0x07
1 uint8 Уведомить аудиопереключатель инициировал соединение 0x40
2–3 uint16 Дополнительная длина данных 17
4 uint8 Индикация подключения, инициированного аудиопереключателем варьируется
0: это соединение не было вызвано переключателем звука.
1: это соединение было инициировано переключателем звука.
5–12 Номер сообщения варьируется
13–20 Код аутентификации сообщения варьируется

Таблица 4.3.4.0: Соединение, инициированное переключателем Notify Audio

Укажите используемый ключ учетной записи

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

Октет Тип данных Описание Ценить
0 uint8 Аудио переключатель 0x07
1 uint8 Укажите используемый ключ учетной записи 0x41
2–3 uint16 Дополнительная длина данных 22
4–9 utf8 Используемая строка UTF8 («используется»)
10–17 Номер сообщения варьируется
18–25 Код аутентификации сообщения варьируется

Таблица 4.3.4.1: Укажите используемый ключ учетной записи

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

Отправить пользовательские данные

Активный переключатель Audio Switch Seeker может инкапсулировать информацию (например, об использовании аудио) аудиопотока в пользовательский байт данных и отправлять ее поставщику с помощью следующего сообщения:

Октет Тип данных Описание Ценить
0 uint8 Аудио переключатель 0x07
1 uint8 Отправить пользовательские данные 0x42
2–3 uint16 Дополнительная длина данных 17
4 uint8 Пользовательские данные варьируется
5–12 Номер сообщения варьируется
13–20 Код аутентификации сообщения варьируется

Таблица 4.3.4.2: Отправка пользовательских данных

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

Установить цель отброшенного соединения

В многоточечных гарнитурах, если предпочтительное соединение, которое необходимо отключить, не используется последним, Искатели аудиопереключателя могут сообщить провайдеру, какое устройство следует отключить, используя следующее сообщение:

Октет Тип данных Описание Ценить
0 uint8 Аудио переключатель 0x07
1 uint8 Установить цель отброшенного соединения 0x43
2–3 uint16 Дополнительная длина данных 17
4 uint8 Целевое подключенное устройство, которое необходимо удалить варьируется
1: это устройство
5–12 Номер сообщения варьируется
13–20 Код аутентификации сообщения варьируется

Таблица 4.3.4.3: Установка цели удаленного соединения

Эталонная реализация

См. встроенную библиотеку SDK Nearby для ознакомления с эталонной реализацией.