Przełączanie dźwięku

Użytkownicy coraz częściej korzystają z różnych urządzeń źródłowych audio, codziennych zadań, rośnie zapotrzebowanie na prostsze rozwiązanie do zarządzania goglami na różnych urządzeniach. Przełącznik dźwięku płynnie przełącza się między zestawami słuchawkowymi między urządzeniami w zależności od aktywności użytkownika (np.rozpoczynanie filmu) i ustalane według priorytetów. zdarzeń (np. połączenia przychodzącego).

Zasady dotyczące UX

  1. Przełączanie połączeń powinno być szybkie i zależne od działania użytkownika.
  2. Przełączanie połączeń powinno być przejrzyste dla użytkowników i umożliwiać lub cofać, jeśli przełączenie jest niepożądane.
  3. Zmiana powinna zapewniać prywatność użytkowników.

Role

Poszukiwacz zmiany dźwięku: Seeker to urządzenie źródłowe audio (np. telefonu lub tabletu), szukając zestawu słuchawkowego w pobliżu, z którym w razie potrzeby można się z nim połączyć.

Dostawca przełączników dźwięku: Dostawca to zwykle zestaw słuchawkowy reklamujący swój obecności i połączenia, aby umożliwić użytkownikom podjęcie decyzji o zmianie.

Omówienie wymagań

Aby możliwe było zastosowanie inteligentnego przełączania, dostawcy muszą przestrzegać tych wymagań:

Nazwa Opis Wymagania Obowiązkowe?
Skanowanie strony Aby zaakceptować nowe żądanie połączenia od innego szukającego, gdy istnieje już połączenie.
W przypadku dostawców usług jednopunktowych:
  • Po rozłączeniu dostawcy usług odtwarzanie dźwięku z oryginalnego urządzenia źródłowego zostanie wstrzymane.
Dostawcy usług wielopunktowych:
  • Jeśli połączenie jest nadal dostępne, prośba o połączenie zostanie zaakceptowana.
  • Jeśli przepustowość połączenia jest pełna, odłącz ostatnio używane połączenie (np. przez dłuższy czas nie było żadnych zdarzeń dźwiękowych) i zaakceptuj nowe żądanie przychodzące.
Aby zwiększyć wydajność, wymagany jest tryb skanowania stron z krótkim opóźnieniem (odstęp czasu skanowania nie powinien przekraczać 640 ms).
Aby kompromis między czasem pracy na baterii a wydajnością przełączania, w większości przypadków dostawca może ustawić domyślny tryb skanowania stron (tryb oszczędzania energii, odstęp między skanowaniem nie powinien przekraczać 1280 ms). Trybu niskiego opóźnienia należy jednak używać w tych sytuacjach:
  • Pierwsze 30 sekund zasilania
  • Pierwsze 30 sekund bez połączenia i stronicowania
  • Pierwsze 30 sekund bezczynności urządzenia
Obowiązkowe
Historia połączeń Aby wrócić do poprzedniego połączenia i wznowić odtwarzanie, w razie potrzeby:
Powrót do poprzedniego połączenia zostanie aktywowany przez komunikację przez interfejsy API strumienia wiadomości.
W razie potrzeby w rekordzie należy uwzględnić zdarzenie wstrzymania dźwięku, aby można było wznowić odtwarzanie.
Utrzymywanie historii połączeń i wdrażanie interfejsów Message Stream API. Obowiązkowe
Stan połączenia Aby osoby szukające mogły dokonać oceny przełączania połączeń, stan połączenia obejmuje:
  • Stan połączenia
  • Typ audio aktywnego połączenia
  • Informacje o koncie aktywnego połączenia
  • Połączone urządzenia
Uwzględnij stan połączenia w reklamach BLE i strumieniu wiadomości. Obowiązkowe
Zmiana możliwości środowiska wykonawczego Przełącznik dźwięku można włączyć, aktualizując oprogramowanie u dostawcy, więc funkcje muszą być synchronizowane między Seekerem i dostawcą w czasie działania. Wdróż interfejsy API strumienia wiadomości, aby uzyskać dostęp do funkcji środowiska wykonawczego. Obowiązkowe
Konfigurowalne reguły przełączania Pozwól Seekera na konfigurowanie priorytetu istniejących aktywnych strumieni audio oraz nowych żądań strumieni audio w ustawieniach użytkownika.
Na przykład przełącznik dźwięku Seeker może udostępniać ustawienia interfejsu, aby umożliwić użytkownikom włączanie i wyłączanie automatycznego przełączania między strumieniowym przesyłaniem multimediów a wywołaniem.
Poszukiwacz przełącznika dźwięku ustawi i pobierze regułę przełączania przez strumień wiadomości.
Tylko dostawcy usług wielopunktowych.
Wdróż interfejsy API strumienia wiadomości, aby umożliwić konfigurowanie reguł przełączania między połączonymi urządzeniami.
Opcjonalnie
Aktywne przełączanie urządzeń Pozwól na symulację przełączania dźwięku między połączonymi urządzeniami.
Po stronie narzędzia do przełączania dźwięku może być dostępny interfejs umożliwiający łatwe przełączanie się między połączonymi urządzeniami.
Tylko dostawcy usług wielopunktowych.
Zaimplementuj interfejsy Message Stream API for Audio Switch Seeker, aby określić aktywne źródło dźwięku między połączonymi urządzeniami.
Obowiązkowe
Powiadomienie o przełączeniu połączenia wielopunktowego Pozwól, by Poszukiwacz przełącznika dźwięku pokazywał powiadomienie o przełączeniu. Tylko dostawcy usług wielopunktowych.
Wdróż interfejsy API strumienia wiadomości, aby powiadamiać połączone osoby szukające przełącznika dźwięku, gdy następuje przełączenie wielopunktowe.
Obowiązkowe

Ładunek reklamowy

Dostawca uwzględni w reklamie swój bieżący stan połączenia, utworzonych na podstawie danych konta Szybkie parowanie opisanych w artykule Reklamy: gdy nie można ich znaleźć.

Pamiętaj, że wersja tabeli 4.2 to 0x1.

Pole stanu połączenia

Oktet Typ danych Opis Wartość Obowiązkowe?
0 uint8 Długość i typ pola
0bLLTTTT
  • L = długość stanu połączenia w bajtach
  • T = typ
0bLLLL0101
  • długość: różne
  • typ = 0b0101
Obowiązkowe
1 uint8 Stan połączenia
0bHAFRSSSS
  • H = wykrywanie głowy
  • A = dostępność połączenia
  • F = tryb ostrości
  • R = połączenie automatyczne
  • S = stan połączenia
0bHAFRSS
Obowiązkowe
2 uint8 Dane niestandardowe
Aktualnie obejmują one tylko te typy treści, które są używane do opisania korzystania z aktualnie strumieniowania audio. Poszukiwacz wyśle go do dostawcy.
Wartość jest wysyłana od Poszukiwacza bieżącego aktywnego strumienia do dostawcy przez strumień wiadomości. Wartość 0, jeśli bieżący aktywny strumień nie pochodzi z Seeker. Obowiązkowe
3 – var Bitmapa połączonych urządzeń
Bitmapa wskazująca, które urządzenia są obecnie połączone z dostawcą. Wszystkie powiązane urządzenia są ułożone w kolejności – jeden bit dla jednego powiązanego urządzenia. Długość zależy od liczby powiązanych urządzeń Dostawcy.
Zmapowany bit ustawiony na 1, jeśli urządzenie jest obecnie połączone z dostawcą. W przeciwnym razie wartość 0.
Szczegółowe informacje znajdziesz w sekcji Mapa bitowa połączonego urządzenia.
Opcjonalnie

Tabela 4.1. Nieprzetworzone dane w polu stanu połączenia

Flagi połączenia
  • 0bH = wykrywanie głowy

    • 1, teraz na głowie
    • 0, w przeciwnym razie nie na głowie lub brak czujnika OHD
  • 0bA = dostępność połączenia

    • 1, dostępne jest połączenie
    • 0, w przeciwnym razie
  • 0bF = tryb pełnej koncentracji

    • 1, obecnie w trybie skupionym, przełączanie połączeń jest niedozwolone w przypadku multimediów wykorzystanie, tzn. brak przechodzenia z A2DP na A2DP
    • 0, w przeciwnym razie
  • 0bR = automatyczne ponowne połączenie

    • 1, jeśli bieżące połączenie jest automatycznie ponownie łączone przez Dostawcę, co oznacza nie jest połączony przez użytkowników (w przypadku połączenia wielopunktowego, jeśli jedna z istniejących automatycznie ponownych połączeń, powinna mieć wartość 1)
    • 0, w przeciwnym razie
Stan połączenia
  • 0x0: brak połączenia
  • 0 x 1: stronicowanie
  • 0x2: połączono, ale dane nie są przesyłane
  • 0x3: przesyłanie danych innych niż dźwiękowe (tylko w przypadku przełączania, jeśli nie, przy użyciu 0xF)
  • 0x4: strumieniowanie A2DP, nie dotyczy AVRCP
  • 0 x 5: odtwarzanie strumieniowe A2DP i AVRCP
  • 0 x 6: przesyłanie strumieniowe przez HFP (połączenie telefoniczne/głosowe) z dzwonkiem w pasmie i innym
  • 0x7: LE Audio – strumieniowe przesyłanie multimediów bez sterowania
  • 0x8: LE Audio – strumieniowe przesyłanie multimediów z kontrolą
  • 0x9: LE Audio – strumieniowanie rozmowy
  • 0xA: LE Audio – transmisja
  • 0xF: tymczasowo wyłącz przełącznik połączenia (np. aktualizacja oprogramowania)
Typ kontekstu LE Audio i stan połączenia

Zaleca się, aby dostawca LE Audio obsługiwał wszystkie określone typy kontekstów w Assigned Numbers 6.12.3 (o ile dostawca wyraźnie nie obsługuje danego typu kontekstu) i mapę typ kontekstu do stanu połączenia, jak pokazano poniżej.

  • Konwersacyjny: 0 x 9
  • Multimedia: 0 x 8
  • Gra: 0 x 7
  • Instrukcja: 0 × 7
  • Asystenci głosowi: 0 x 9
  • Na żywo: 0 x 9
  • Efekty dźwiękowe: 0 x 2
  • Powiadomienia: 0 x 2
  • Dzwonek: 0 x 9
  • Alerty: 0 x 7
  • Alarm o zagrożeniu: 0 x 9

W przypadku scenariusza mieszanego LE Audio, takiego jak odtwarzanie multimediów podczas Dostawca powinien używać stanu połączenia o najwyższym priorytecie, tj. 0 x 9 (wywołanie) dla powyższego scenariusza zamiast 0 x 8 (multimedia).

Mapa bitowa połączonego urządzenia

Aby uniknąć niepożądanej zmiany połączenia, Poszukiwacz musi wiedzieć, urządzenia, do których są obecnie podłączone słuchawki. Jeśli na przykład zestaw słuchawkowy jest połączony z telefonem, więc użytkownik nie chce, aby przeszkadzały mu gdy jeden z członków rodziny włączy YouTube na tablecie.

Pamiętaj, że ta bitmapa jest anonimowa, więc Poszukiwacz nie wie, co jeszcze które są powiązane z Dostawcą. Weźmy na przykład 5 powiązanych urządzeń:

  • 0: laptop (0Bx0000000)
  • 1: telefonA (0b0x000000)
  • 2: telefonB (0B00x00000)
  • 3: tablet (0b000x0000)
  • 4: telewizor (0b0000x000)

Jeśli obecnie połączonymi urządzeniami są laptopy i tablety, wartość bitmapa ma format 0b10010000. Zmiana zamówienia jest akceptowalna, jeśli jest nieunikniona, np. gdy użytkownicy przywracają go do ustawień fabrycznych lub gdy liczba powiązanych urządzeń jest liczona. osiągnie górny limit.

Losowa rozsądna reklama

Aby uniknąć śledzenia i uszanować prywatność użytkowników, Dostawca powinien dokonywać rotacji i Zaszyfruj pole kluczem konta za pomocą AES-CTR:

 encrypted_connection_status_field = connection_status_raw_data ^ AES(Key, IV)

gdzie

  1. Klucz pochodzi z używanego klucza konta, który definicja została opisana w następnej sekcji.

    • Klucz jest generowany przez funkcję HKDF (IETF RFC 5869) przy użyciu SHA-256 .

        Key = HKDF(account_key, NULL, UTF8("SASS-RRD-KEY"),16)
      
    • Dostawca użyje tu oryginalnego klucza konta, tj. pierwszego bajtu klucza to 0x04, nie jest uwzględniony we wzorcu użycia.

  2. Wektor początkowy (IV) to 2-bajtowy ciąg zaburzający danych klucza konta o zerowej wartości dopełnienie, np. IV to concat(salt, 14-bajt ZEROs).

  3. Nieprzetworzone dane o stanie połączenia są zdefiniowane w tabeli 4.1, jeśli zmian stanu połączenia, sól i RPA należy ponownie wygenerować w tym samym okresie wyświetlania reklam.

Powoduje to, że pole stanu zaszyfrowanego połączenia jest równocześnie rotowane Dane klucza konta są poddawane rotacji.

Reklama BLE ma następującą strukturę:

Oktet Typ danych Opis Wartość Obowiązkowe?
0 uint8 Wersja i flagi 0x10 Obowiązkowe
1–t Dane klucza konta różni się Obowiązkowe
T+1S Dane o baterii różni się Opcjonalnie
s+1var Losowe dane możliwe do rozwiązania różni się Wymagane,jeśli lista kluczy konta nie jest pusta.
W przeciwnym razie zostaną wykluczone.

Tabela 4.2. Reklamy BLE zawierające losowe dane możliwe do rozwiązania

Losowe dane możliwe do rozwiązania zawierają:

Oktet Typ danych Opis Wartość Obowiązkowe?
0 uint8 Długość i typ pola
0bLLTTTT
  • L = długość zaszyfrowanych danych
  • T = typ
0bLLLL0110
  • długość: różne
  • typ = 0b0110
Obowiązkowe
1 – var Zaszyfrowane dane różni się Obowiązkowe

Tabela 4.2.1: Dane losowe

Jeśli na przykład dane losowe zawierają zaszyfrowane połączenie pola stanu, odszyfrowanym wynikiem będzie polu stanu połączenia.

Aby zapobiec manipulacjom, musisz nieznacznie zmienić powyższe dane klucza konta gdy w reklamie zawarte są losowe dane możliwe do rozwiązania. Normalnie, gdy podczas tworzenia filtra klucza konta, zostaje użyta wartość V przez połączenie konta filtr z ciągiem zaburzającym. Zamiast tego, gdy wartość V powinna być skonstruowana w ten sposób:

 V = concat(account_key, salt, random_resolvable_data)

Jeśli reklamowane są zarówno dane o baterii, jak i dane losowe, V powinien być skonstruowane w ten sposób:

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

Klucz do konta w użyciu

Przełączanie połączeń odbywa się na podstawie konta, dlatego Dostawca powinien uwzględnić informacje o bieżącym połączeniu w reklamie BLE. Jeśli obecnie podłączone urządzenie jest Poszukiwaczem przełączania dźwięku, Dostawca powinien mieć aby uzyskać klucz konta powiązany z tym Poszukiwaczem i używać go do zaszyfrować pole stanu połączenia. Jeśli podłączone źródło dźwięku to inne niż audio Switch Seeker, dostawca powinien użyć ostatnio używanego klucza konta.

Przed obliczeniem filtra klucza konta Dostawca powinien zmodyfikować pierwszy kluczy konta, aby uwzględnić jeden z następujących wzorców użycia:

  1. 0b00000100
    Ten klucz konta nie jest używany.
    Jest to wartość domyślna (patrz Klucz konta).
  2. 0b00000101
    Ten klucz konta jest ostatnio używany.
    Pole stanu połączenia jest szyfrowane tym kluczem konta. Brak o bieżącym stanie połączenia, może to oznaczać, że nie podłączone urządzenia lub podłączone urządzenie nie jest Poszukiwaczem przełącznika dźwięku.
  3. 0b00000110
    Ten klucz konta to używany klucz do konta.
    Pole stanu połączenia jest szyfrowane przez ten klucz konta, a bieżące połączone urządzenie jest powiązane z tym kluczem do konta.
.

Schemat ładunku przełącznika dźwięku

Ilustracja poniżej przedstawia schemat ładunku przełącznika dźwięku.

Wiadomości

Po połączeniu Seeker i Dostawca mogą używać strumienia wiadomości do synchronizowania dźwięku przełączać możliwości, aktywować przełącznik połączenia, ustawiać i uzyskiwać przełączenie. ustawienia, powiadamiaj o stanie połączenia itd. Tworzymy grupę wiadomości i kodów komunikatów specyficznych dla przełącznika dźwięku, jak podano poniżej.

Nazwa grupy wiadomości Wartość
Przełączanie dźwięku 0x07

Dodatkowe informacje o poszczególnych kodach wiadomości znajdziesz w kolejnych sekcjach.

Nazwa kodu wiadomości Wartość Tylko połączenie wielopunktowe Nadawca Respondent Zaszyfruj MAC POTWIERDŹ
Korzystanie z przełącznika dźwięku 0x10 N Obie opcje Oba za pomocą kodu 0x11 N N N
Powiadamianie funkcji przełącznika dźwięku 0x11 N Obie opcje Obie opcje N T T
Ustawianie stanu połączenia wielopunktowego 0x12 T Poszukiwacz Dostawca N T T
Ustawianie preferencji przełączania 0x20 T Poszukiwacz Dostawca N T T
Pobieranie preferencji przełączania 0x21 T Poszukiwacz Dostawca, za pomocą kodu 0x22 N N N
Powiadamianie o zmianie preferencji 0x22 T Dostawca Poszukiwacz N N N
Przełącz aktywne źródło dźwięku(na połączone urządzenie) 0x30 T Poszukiwacz Dostawca N T T
Wróć 0x31 N Poszukiwacz Dostawca N T T
Powiadom zdarzenie przełączania wielopunktowego 0x32 T Dostawca Poszukiwacz N N N
Uzyskiwanie stanu połączenia 0x33 T Poszukiwacz Dostawca, za pomocą kodu 0x34 N N N
Powiadamianie o stanie połączenia 0 × 34 T Dostawca Poszukiwacz T N N
Powiadamiaj o połączeniu zainicjowanym przez przełącznik dźwięku 0x40 N Poszukiwacz Dostawca N T T
Wskaż używany klucz konta 0x41 N Poszukiwacz Dostawca N T T
Wysyłaj dane niestandardowe 0x42 N Poszukiwacz Dostawca N T T
Ustawianie wartości docelowej połączenia 0x43 T Poszukiwacz Dostawca N T T

Tabela 4.3. Komunikaty dotyczące przełącznika dźwięku

Adres MAC wiadomości przełącznika dźwięku

Aby zapewnić uwierzytelnianie wiadomości, wszystkie wiadomości przełącznika dźwięku zawierają dodatkowe dane wysyłane z usługi Seeker do dostawcy wymagają kodu uwierzytelniania wiadomości. Kiedy wiadomość z MAC, powinna być potwierdzona, aby Seeker wie, czy Dostawca zareagował na wiadomość.

Jeśli uwierzytelnienie wiadomości się powiedzie, dostawca wyśle potwierdzenie wiadomość:

Oktet Typ danych Opis Wartość
0 uint8 Potwierdzenie 0xFF
1 uint8 POTWIERDŹ 0x01
2–3 uint16 Dodatkowa długość danych różni się
4 uint8 Przełączanie dźwięku 0x07
5 uint8 Kod wiadomości przełącznika dźwięku różni się
6–s Dodatkowe dane różni się

W przypadku niepowodzenia Dostawca powinien wysłać NAK dla wiadomości:

Oktet Typ danych Opis Wartość
0 uint8 Potwierdzenie 0xFF
1 uint8 NAK 0x02
2–3 uint16 Dodatkowa długość danych 0x0003
4 uint8 Przyczyna błędu różni się
5 uint8 Przełączanie dźwięku 0x07
6 uint8 Kod wiadomości przełącznika dźwięku różni się

Pamiętaj, że jeśli nadawcą jest dostawca, MAC nie jest wymagany.

Korzystanie z przełącznika dźwięku

Zarówno dostawca przełączników dźwięku, jak i szukający mogą sprawdzić, czy połączone Szybkie parowanie Poszukiwacz/dostawca obsługuje przełącznik dźwięku (lub nie) przy użyciu tego komunikatu:

Oktet Typ danych Opis Wartość
0 uint8 Przełączanie dźwięku 0x07
1 uint8 Korzystanie z przełącznika dźwięku 0x10
2–3 uint16 Dodatkowa długość danych 0

Tabela 4.3.1.0: Korzystanie z przełącznika dźwięku

Powiadamianie o możliwości przełącznika dźwięku

Po otrzymaniu możliwości przełącznika dźwięku , wyszukiwanie lub dostawca przełącznika dźwięku zwróci jeden z tych komunikatów: flagi:

Oktet Typ danych Opis Wartość
0 uint8 Przełączanie dźwięku 0x07
1 uint8 Powiadamianie o możliwości przełącznika dźwięku 0x11
2–3 uint16 Dodatkowa długość danych 20, jeśli jest to wysyłane przez Seeker,
4, jeśli jest to wysyłane przez dostawcę
4–5 uint16 Kod wersji przełącznika dźwięku Wartość inna niż 0 oznacza, że obsługuje on przełącznik dźwięku. Obecna wersja (z ulepszeniem zabezpieczeń) to 0x0102.
0x0000 lub brak odpowiedzi w ciągu 1 sekundy oznacza, że przełącznik dźwięku nie jest obsługiwany na tym urządzeniu
6–7 flagi Flagi funkcji przełącznika dźwięku u dostawcy.
Jeśli ta wiadomość jest wysyłana przez Seekera, te 2 bajty należy zignorować.
różne
Patrz Flagi możliwości przełącznika dźwięku
8–15 Liczba jednorazowa wiadomości
Wymagana tylko wtedy, gdy ta wiadomość jest wysyłana przez Poszukiwacza
różni się
16–23 Kod uwierzytelniania wiadomości
Wymagany tylko wtedy, gdy jest wysyłany przez Seekera
różni się

Tabela 4.3.1.1: Powiadamiaj o możliwościach przełącznika dźwięku

Flagi funkcji przełącznika dźwięku
  1. Bit 0 (oktet 6, MSB): stan przełącznika dźwięku

    • 1, jeśli stan przełącznika dźwięku jest włączony
    • 0, w przeciwnym razie
  2. Część 1: konfigurowanie wielopunktowe

    • 1, jeśli urządzenie obsługuje połączenie wielopunktowe i można je przełączać między wyłączona
    • 0, w przeciwnym razie (nie obsługuje połączenia wielopunktowego lub połączenie jest zawsze włączone)
  3. Bit 2: bieżący stan połączenia wielopunktowego

    • 1, jeśli włączono połączenie wielopunktowe
    • 0, w przeciwnym razie
  4. Bit 3: wykrywanie kontaktu z głową

    • 1, jeśli urządzenie obsługuje wykrywanie kontaktu z głową (nawet jeśli jest wyłączono teraz)
    • 0, w przeciwnym razie
  5. Bit 4: bieżący stan wykrywania kontaktu z głową

    • 1 – jeśli wykrywanie kontaktu z głową jest włączone
    • 0, w przeciwnym razie (nie obsługuje wykrywania kontaktu z głową, wyłączono)
  6. Wszystkie pozostałe bity są zarezerwowane (domyślnie 0).

Ustaw stan połączenia wielopunktowego

W przypadku Poszukiwaczy przełączania dźwięku możemy udostępnić użytkownikom ustawienie umożliwiające ich włączenie lub wyłączenie przy użyciu funkcji połączenia wielopunktowego. Poszukiwacz ustawi stan połączenia wielopunktowego na Dostawca używający tego komunikatu:

Oktet Typ danych Opis Wartość
0 uint8 Przełączanie dźwięku 0x07
1 uint8 Ustaw stan połączenia wielopunktowego 0x12
2–3 uint16 Dodatkowa długość danych 17
4 uint8 Stan wielopunktowy 0: wyłącz połączenie wielopunktowe
1: włącz połączenie wielopunktowe
5–12 Liczba jednorazowa z wiadomości różni się
13–20 Kod uwierzytelniania wiadomości różni się

Tabela 4.3.1.2: Ustawianie stanu połączenia wielopunktowego

Ustaw preferencje przełączania

Poszukiwacze przełącznika dźwięku mogą modyfikować ustawienie przełączania wielopunktowego i ustawiać to do dostawcy przy użyciu tego komunikatu:

Oktet Typ danych Opis Wartość
0 uint8 Przełączanie dźwięku 0x07
1 uint8 Ustaw preferencje przełączania 0x20
2–3 uint16 Dodatkowa długość danych 18
4 flagi Ustawienie przełączania różne
Zobacz flagę ustawienia przełączania wielopunktowego
5 Zaawansowane ustawienia przełączania
Ten bajt jest zarezerwowany; wartość domyślna to 0
różni się
6–13 Liczba jednorazowa z wiadomości różni się
14–21 Kod uwierzytelniania wiadomości różni się

Tabela 4.3.2.0: Ustawianie preferencji przełączania

Flaga ustawienia przełączania wielopunktowego
  • Bit 0 (MSB): A2DP vs A2DP (domyślnie 0)
  • Bit 1: HFP vs. HFP (domyślnie 0)
  • Bit 2: A2DP vs HFP (domyślnie 0)
  • Bit 3: HFP vs. A2DP (domyślnie 1)
  • Bit 4–7: zarezerwowane
  • Powyżej oznacza się jako „prośba o nowy profil” a „obecny aktywny profil”
    • 0 – nie zmieniaj
    • 1 – przejście

Pobranie preferencji przełączania

Poszukiwacze przełącznika dźwięku mogą wysyłać zapytania o preferencję przełączania połączenia wielopunktowego z Dostawca używający tego komunikatu:

Oktet Typ danych Opis Wartość
0 uint8 Przełączanie dźwięku 0x07
1 uint8 Pobranie konfiguracji przełączania 0x21
2–3 uint16 Dodatkowa długość danych 0

Tabela 4.3.2.1: Pobieranie preferencji przełączania

Powiadamiaj o preferencjach zmiany

Oktet Typ danych Opis Wartość
0 uint8 Przełączanie dźwięku 0x07
1 uint8 Powiadamiaj o preferencjach zmiany 0x22
2–3 uint16 Dodatkowa długość danych 2
4 flagi Przełączanie flag preferencji różne
Zobacz flagę ustawienia przełączania wielopunktowego
5 Zaawansowane ustawienia przełączania
Ten bajt jest zarezerwowany; domyślna wartość powinna wynosić 0
różni się

Tabela 4.3.2.2: Powiadomienia o preferencjach przełączania

Przełącz aktywne źródło dźwięku (na połączone urządzenie)

Poszukiwacze przełącznika dźwięku mogą poprosić dostawcę połączenia wielopunktowego o przełączenie aktywnej źródła dźwięku między połączonymi urządzeniami, używając tego komunikatu:

Oktet Typ danych Opis Wartość
0 uint8 Przełączanie dźwięku 0x07
1 uint8 Przełącz aktywne źródło dźwięku (na połączone urządzenie) 0x30
2–3 uint16 Dodatkowa długość danych 17
4 flagi Przełączanie flag zdarzenia aktywnego źródła dźwięku różni się
Zobacz przełączanie aktywnego źródła dźwięku.
5–12 Liczba jednorazowa z wiadomości różni się
13–20 Kod uwierzytelniania wiadomości różni się

Tabela 4.3.3.0: Przełączanie aktywnego źródła dźwięku (na połączone urządzenie)

Przełączam zdarzenie aktywnego źródła dźwięku
  • Bit 0 (MSB): 1 przełączenie na to urządzenie, 0 na drugie połączone urządzenie
  • Bit 1: wznowienie odtwarzania na przełączeniu na urządzenie po przełączeniu, w przeciwnym razie – 0. Wznowienie gry oznacza, że Dostawca wysyła powiadomienie PLAY do Poszukiwacza za pomocą profilu AVRCP. Jeśli poprzedni stan (przed zmianą stanu) nie był PLAY, dostawca powinien zignorować tę flagę.
  • Bit 2: 1 odrzucenie SCO na innym urządzeniu, w przeciwnym razie – 0
  • Bit 3: 1 odłącz Bluetooth na urządzeniu poza domem, w przeciwnym razie – 0.
  • Bit 4–7: zarezerwowany.

Poszukiwacze zmiany dźwięku nie zawsze poprawnie rozumieją swój stan, więc jest to możliwe. aby Dostawca otrzymał opcję „Przełącz na to urządzenie” gdy Poszukiwacz jest aktywne urządzenie. Aby w tym przypadku prawidłowy interfejs użytkownika był widoczny w narzędziu Seeker, Dostawca może wysłać NAK z przyczyną błędu, 0x4 – działanie nadmiarowego urządzenia.

W przypadku dostawcy LE Audio, który ma więcej niż jednego członka zestawu, Dostawca powinien odłączaj wszystkich członków od Seekera, w przeciwnym razie od stosu Bluetooth Szukający połączy się ponownie z dostawcą.

Przełącz się z powrotem (na odłączone urządzenie)

Jeśli przełączenie połączenia jest niepożądane, użytkownicy mogą je cofnąć. w niektórych sytuacjach warto przywrócić połączenie audio, aby zminimalizować nie jest zakłócona. Poszukiwacz użyje tego komunikatu, aby aktywować przełączenie z powrotem:

Oktet Typ danych Opis Wartość
0 uint8 Przełączanie dźwięku 0x07
1 uint8 Przełącz się z powrotem (na odłączone urządzenie) 0x31
2–3 uint16 Dodatkowa długość danych 17
4 uint8 Przełącz wydarzenie z powrotem różne
0x01: powrót
0x02: powrót i wznowienie odtwarzania
5–12 Liczba jednorazowa z wiadomości różni się
13–20 Kod uwierzytelniania wiadomości różni się

Tabela 4.3.3.1: Powrót (na odłączone urządzenie)

W przypadku dostawców połączeń wielopunktowych w celu przełączenia połączenia dostawca może usunąć wartość połączenie z jednym urządzeniem źródła dźwięku i przerwanie sesji audio na drugim źródła dźwięku. Załóżmy na przykład, że zestaw wielopunktowy jest podłączony do tablet i trzecie obsługiwane urządzenie z przełącznikiem dźwięku. Użytkownik ogląda film na na tablecie, gdy na jego telefonie pojawi się połączenie przychodzące. Telefon się włączy przełącznika połączenia na słuchawkach, które musi odłączyć połączenia w celu połączenia z telefonem, jednocześnie wstrzymując odtwarzanie multimediów w ramach sesji na tablecie, aby pobrać dzwonek z telefonu. Jeśli użytkownik odmówi połączenia, telefon może poprosić zestaw słuchawkowy o „ponowne włączenie i wznowienie odtwarzania”. Po otrzymaniu tego żądania zestaw słuchawkowy musi ponownie się połączyć z trzecim urządzeniem. wznów odtwarzanie wstrzymanego filmu na tablecie.

Powiadom zdarzenie przełączania wielopunktowego

Aby poinformować użytkowników o wydarzeniu z przełączeniem wielopunktowym, przełącznik dźwięku Poszukiwacz może wyświetlać użytkownikom powiadomienie. Dostawca powinien powiadomić o połączeniu Poszukiwań zmiany dźwięku Poszukiwacze zdarzenia zmiany dźwięku.

Oktet Typ danych Opis Wartość
0 uint8 Przełączanie dźwięku 0x07
1 uint8 Powiadamiaj o zdarzeniu przełączania wielopunktowego
Dostawca powinien wysyłać to za pomocą każdego przełącznika, w tym Poszukiwacz zmiany dźwięku na inny niż Audio, Poszukiwacz zmiany dźwięku na inny, Poszukiwacz zmiany dźwięku i Poszukiwacz zmiany dźwięku Poszukiwacz zmiany dźwięku
0x32
2–3 uint16 Dodatkowa długość danych różni się
4 uint8 Przyczyna zmiany
Tę wartość należy określać na podstawie stanu połączenia. W przypadkach użycia LE Audio przydatne może być mapowanie między kontekstem typu LE Audio i stanem połączenia. Na przykład stan połączenia Asystenta głosowego to 0 x 9(LE Audio – strumieniowanie połączenia). Dlatego w przypadku przełączenia zainicjowanego przez Asystenta głosowego powód przełączenia powinien być 0x02.
różne
0x00: nieokreślone
0x01: multimedia (np. strumieniowanie A2DP, strumieniowanie multimediów LEA)
0x02: wywołanie (np. strumieniowanie HFP, strumieniowanie rozmów LEA)
5 uint8 Urządzenie docelowe różne
0x01: to urządzenie
0x02: inne połączone urządzenie
6–n utf8 Nazwa urządzenia docelowego
, jeśli urządzeniem docelowym jest Seeker, używając nazwy wysłanej do tego urządzenia lub nazwa urządzenia BT (jeśli nie jest używana) z 2 ostatnimi bajtami adresu.
różni się

Tabela 4.3.3.2: Powiadomienie o zdarzeniu przełączania wielopunktowego

Sprawdzanie stanu połączenia

Poszukiwacz może uzyskać bieżący stan połączenia od dostawcy:

Oktet Typ danych Opis Wartość
0 uint8 Przełączanie dźwięku 0x07
1 uint8 Sprawdzanie stanu połączenia 0x33
2–3 uint16 Dodatkowa długość danych 0

Tabela 4.3.3.3. Sprawdzanie stanu połączenia

Po otrzymaniu tej wiadomości Dostawca powinien odpowiedzieć, używając kodu wiadomości 0x34, powiadom o stanie połączenia.

Powiadamianie o stanie połączenia

Zgodnie z definicją w ładunku reklamowym BLE dla dostawców usług wielopunktowych, jeśli stan połączenia zmieni się, z wyjątkiem zmiany Dostawca powinien również powiadomić połączone wyszukiwarki, które używając w przypadku tej zmiany tego samego klucza konta. Jeśli Dostawca jest połączony korzystając z narzędzia Audio Switch i Seeker, które nie korzysta z dźwięku jest aktywna, dostawca powinien również powiadomić połączone źródło dźwięku zmień stan połączenia (przy użyciu klucza konta Seeker).

Oktet Typ danych Opis Wartość
0 uint8 Przełączanie dźwięku 0x07
1 uint8 Powiadamianie o stanie połączenia 0 × 34
2–3 uint16 Dodatkowa długość danych różni się
4 uint8 Flaga aktywnego urządzenia różni się
0x00: ten Poszukiwacz jest pasywny, a aktywne urządzenie używa tego samego klucza konta
0x01: ten Poszukiwacz jest urządzeniem aktywnym
0x02: Poszukiwacz jest pasywny, a aktywnym urządzeniem nie może być przełącznikiem dźwięku.
5–n Stan zaszyfrowanego połączenia różni się
n+1 – n+8 Liczba jednorazowa z wiadomości różni się

Tabela 4.3.3.4: Powiadamianie o stanie połączenia

Komunikat o stanie zaszyfrowanego połączenia

 encrypted_connection_status = connection_status_raw_data ^ AES(Key, IV)

gdzie:

Powiadamiaj o połączeniu zainicjowanym przez przełącznik dźwięku

Dostawcy przełączników dźwięku mogą potrzebować informacji o tym, czy przełączanie połączenia zostało uruchomione za pomocą przełącznika dźwięku, aby wywołać różne reakcje, np. wyłącz ikony audio dla dźwięku i przełącz zdarzenia. Poszukiwacz wysyła wiadomość, aby powiadomić dostawcę, że to było połączenie zainicjowane za pomocą przełącznika dźwięku.

Oktet Typ danych Opis Wartość
0 uint8 Przełączanie dźwięku 0x07
1 uint8 Powiadamiaj o połączeniu zainicjowanym przez przełącznik dźwięku 0x40
2–3 uint16 Dodatkowa długość danych 17
4 uint8 Wskazanie połączenia zainicjowanego za pomocą przełącznika dźwięku różne
0: to połączenie nie zostało aktywowane przez przełącznik dźwięku
1: to było połączenie zainicjowane za pomocą przełącznika dźwięku
5–12 Liczba jednorazowa z wiadomości różni się
13–20 Kod uwierzytelniania wiadomości różni się

Tabela 4.3.4.0: Powiadom mnie o połączeniu zainicjowanym przez przełącznik dźwięku

Wskaż używany klucz konta

Jeśli z usługą Seeker jest powiązanych wiele kluczy konta (np. wielu użytkowników) Dostawca, Poszukiwacz użyje poniższego komunikatu, aby wskazać konto jest używany.

Oktet Typ danych Opis Wartość
0 uint8 Przełączanie dźwięku 0x07
1 uint8 Wskaż używany klucz konta 0x41
2–3 uint16 Dodatkowa długość danych 22
4–9 utf8 Używany ciąg znaków UTF8 („w użyciu”)
10–17 Liczba jednorazowa z wiadomości różni się
18–25 Kod uwierzytelniania wiadomości różni się

Tabela 4.3.4.1: Wskazywanie używanego klucza konta

Po otrzymaniu tego komunikatu Dostawca wie, który klucz konta jest używany. przez zweryfikowanie kodu uwierzytelniania wiadomości.

Wysyłaj dane niestandardowe

Aktywny Poszukiwacz przełącznika dźwięku może załączyć informacje (np. dźwięk, strumienia audio w niestandardowych bajtach danych i wysyłać go do dostawcy za pomocą funkcji ten komunikat:

Oktet Typ danych Opis Wartość
0 uint8 Przełączanie dźwięku 0x07
1 uint8 Wysyłaj dane niestandardowe 0x42
2–3 uint16 Dodatkowa długość danych 17
4 uint8 Dane niestandardowe różni się
5–12 Liczba jednorazowa z wiadomości różni się
13–20 Kod uwierzytelniania wiadomości różni się

Tabela 4.3.4.2. Wysyłanie danych niestandardowych

Po otrzymaniu danych niestandardowych Dostawca zaktualizuje pakiet reklamowy , aby uwzględnić dane niestandardowe. W przypadku dostawcy usług wielopunktowych powinien także powiadomić zmianę stanu połączenia na inny połączony Seeker korzystający z tego samego klucza konta.

Ustaw wartość docelową połączenia

W przypadku zestawów słuchawkowych wielopunktowych, jeśli preferowane połączenie nie jest ostatnio używane, Poszukiwacze przełącznika dźwięku mogą wskazać Dostawcy, które urządzenie aby zrezygnować, wysyłając wiadomość:

Oktet Typ danych Opis Wartość
0 uint8 Przełączanie dźwięku 0x07
1 uint8 Ustaw wartość docelową połączenia 0x43
2–3 uint16 Dodatkowa długość danych 17
4 uint8 Docelowe połączone urządzenie, które ma zostać usunięte różni się
1: to urządzenie
5–12 Liczba jednorazowa z wiadomości różni się
13–20 Kod uwierzytelniania wiadomości różni się

Tabela 4.3.4.3: Ustawianie miejsca docelowego połączenia

Implementacja referencyjna

Zobacz bibliotekę wbudowanych pakietów SDK w pobliżu, aby zapoznać się z implementacją referencyjną