Audiowechsel
Da Nutzer immer häufiger mehrere Audioquellengeräte für ihre täglichen Aufgaben verwenden, steigt die Nachfrage nach einer einfacheren Lösung zur Verwaltung der Kopfhörernutzung auf verschiedenen Geräten. Der Audio-Wechsel ermöglicht einen nahtlosen Wechsel der Headset-Verbindungen zwischen Geräten basierend auf Nutzeraktivitäten (z.B. Starten eines Films) und priorisierten Ereignissen (z.B. ein eingehender Anruf).
UX-Prinzipien
- Die Verbindungsweiterleitung sollte schnell und auf Nutzeraktionen basieren.
- Der Verbindungswechsel sollte für Nutzer transparent sein und ihnen die Möglichkeit geben, den Wechsel zu steuern oder rückgängig zu machen, wenn er nicht gewünscht ist.
- Beim Wechseln muss der Datenschutz der Nutzer gewahrt bleiben.
Rollen
Audio Switch Seeker: Der Seeker ist ein Audioquellegerät (z. B. ein Smartphone oder Tablet), das nach einem Headset in der Nähe sucht, mit dem es eine Verbindung herstellen kann.
Audio-Wechselanbieter: Der Anbieter ist in der Regel ein Headset, das seine Präsenz und seinen Verbindungsstatus angibt, damit Suchende Entscheidungen zur Umschaltung treffen können.
Übersicht über die Anforderungen
Für eine intelligente Umschaltung müssen Anbieter die folgenden Anforderungen erfüllen:
Name | Beschreibung | Voraussetzungen | Ist das obligatorisch? |
---|---|---|---|
Seitenscan | Sie können eine neue Verbindungsanfrage von einem anderen Suchenden akzeptieren, wenn bereits eine Verbindung besteht. Für Anbieter mit zentraler Anlaufstelle:
|
Für eine bessere Leistung ist ein Seitenlesemodus mit niedriger Latenz erforderlich (Scanintervall darf maximal 640 ms betragen). Um einen Kompromiss zwischen Akkulaufzeit und Schaltleistung zu finden, kann der Anbieter für die meisten Fälle einen Standard-Seitenlesemodus festlegen (Energiesparmodus, Scanintervall darf maximal 1.280 ms betragen). Der Modus für geringe Latenzzeit muss jedoch in den folgenden Fällen verwendet werden:
|
Obligatorisch |
Verbindungsverlauf | Um zur vorherigen Verbindung zurückzukehren und gegebenenfalls die Wiedergabe fortzusetzen. Das Zurückwechseln wird durch die Kommunikation über Message Stream APIs ausgelöst. Das Audiopausierungsereignis sollte in den Datensatz aufgenommen werden, damit die Wiedergabe gegebenenfalls fortgesetzt werden kann. |
Verbindungsverlauf verwalten und Message Stream APIs implementieren | Obligatorisch |
Verbindungsstatus | Für Sucher, um die Verbindungsweiterleitung zu beurteilen.Der Verbindungsstatus umfasst:
|
Den Verbindungsstatus in BLE-Anzeigen und Nachrichtenstreams einschließen. | Obligatorisch |
Laufzeitfunktionen ändern sich | Die Audioweiterleitung kann durch ein Firmware-Update beim Anbieter aktiviert werden. Die Funktionen müssen daher zur Laufzeit zwischen Sucher und Anbieter synchronisiert werden. | Implementieren Sie Message Stream APIs, um auf Laufzeitfunktionen zuzugreifen. | Obligatorisch |
Konfigurierbare Umschaltregeln | Sie können die Priorität zwischen vorhandenem aktiven Audiostreaming und neuen Audiostreaminganfragen über die Einstellungen der Nutzereinstellungen konfigurieren. Der Audio-Wechsel kann beispielsweise UI-Einstellungen bereitstellen, mit denen Nutzer den automatischen Wechsel zwischen Medienstreaming und Anrufen aktivieren oder deaktivieren können. Der Audio-Wechsel-Sucher legt die Umschaltregel über den Nachrichtenstream fest und ruft sie ab. |
Nur für Multipoint-Anbieter. Implementieren Sie Message Stream APIs, um Regeln für den Wechsel zwischen verbundenen Geräten konfigurierbar zu machen. |
Optional |
Aktiver Gerätewechsel | Audio-Switch-Sucher soll den Audio-Wechsel zwischen verbundenen Geräten simulieren. Auf der Seite des Audio-Switch-Suchers kann es eine Benutzeroberfläche geben, mit der Nutzer ganz einfach zwischen verbundenen Geräten wechseln können. |
Nur für Multipoint-Anbieter. Implementieren Sie Message Stream APIs für den Audio-Wechsel-Sucher, um die aktive Audioquelle zwischen verbundenen Geräten zu ermitteln. |
Obligatorisch |
Benachrichtigung zum Multipoint-Wechsel | Die Benachrichtigung zum Wechseln des Audiostreams soll vom Audio-Schalter-Sucher angezeigt werden. | Nur für Multipoint-Anbieter. Implementiere Message Stream APIs, um verbundene Audio-Wechsel-Sucher zu benachrichtigen, wenn ein Multipoint-Wechsel stattfindet. |
Obligatorisch |
Anzeigennutzlast
Der Anbieter muss in der Werbung seinen aktuellen Verbindungsstatus angeben, der auf den in Werbung: Wenn nicht auffindbar beschriebenen Fast Pair-Kontodaten basiert.
Die Version von Tabelle 4.2 ist 0x1.
Feld „Verbindungsstatus“
Oktett | Datentyp | Beschreibung | Wert | Ist das obligatorisch? |
---|---|---|---|---|
0 | uint8 |
Feldlänge und Typ 0bLLLLTTTT
|
0bLLLL0101
|
Obligatorisch |
1 | uint8 |
Verbindungsstatus 0bHAFRSSSS
|
0bHAFRSSSS
|
Obligatorisch |
2 | uint8 |
Benutzerdefinierte Daten Derzeit enthält er nur den Inhaltstyp, der die Nutzung des aktuellen Audiostreams beschreibt. Der Suchende sendet sie an den Anbieter. |
Der Wert wird vom Sucher des aktuell aktiven Streams über einen Nachrichtenstream an den Anbieter gesendet. „0“, wenn das aktuelle aktive Streaming nicht von Seeker stammt. | Obligatorisch |
3 – var | Bitmap der verbundenen Geräte Eine Bitmap, die zeigt, welche Geräte derzeit mit dem Anbieter verbunden sind. Alle gekoppelten Geräte sind in der Reihenfolge angeordnet, ein Bit für ein gekoppeltes Gerät. Die Länge hängt davon ab, wie viele Geräte des Anbieters verbunden sind. |
Das zugeordnete Bit ist auf „1“ gesetzt, wenn das Gerät derzeit mit dem Anbieter verbunden ist, andernfalls auf „0“. Weitere Informationen finden Sie unter Bitmap für verbundene Geräte. |
Optional |
Tabelle 4.1:Rohdaten des Felds „Verbindungsstatus“
Verbindungs-Flags
0bH = On-Head-Erkennung
- 1, ich kümmere mich darum.
- 0, andernfalls nicht auf dem Kopf oder kein OHD-Sensor vorhanden
0bA = Verfügbarkeit der Verbindung
- 1, es gibt eine verfügbare Verbindung
- 0, andernfalls
0bF = Fokusmodus
- 1. Im Fokusmodus ist der Verbindungswechsel für die Mediennutzung nicht zulässig, d. h. kein Wechsel von A2DP zu A2DP.
- 0, andernfalls
0bR = automatische Wiederverbindung
- „1“, wenn die aktuelle Verbindung vom Anbieter automatisch wiederhergestellt wird, d. h., sie wird nicht von Nutzern hergestellt. Bei Multipoint-Verbindungen sollte „1“ festgelegt werden, wenn eine der vorhandenen Verbindungen automatisch wiederhergestellt wird.
- 0, andernfalls
Verbindungsstatus
- 0x0: keine Verbindung
- 0x1: Auslagerung
- 0x2: Verbunden, aber keine Datenübertragung
- 0x3: Übertragung nicht-audiobasierter Daten (nur wenn umschaltbar, andernfalls 0xF verwenden)
- 0x4: A2DP-Streaming, AVRCP nicht zutreffend
- 0x5: A2DP-Streaming und AVRCP-Wiedergabe
- 0x6: HFP-Streaming (Telefon-/VoIP-Anruf), einschließlich In-Band- und Non-In-Band-Klingelton
- 0x7: LE Audio – Medienstreaming ohne Steuerung
- 0x8: LE Audio – Medienstreaming mit Steuerung
- 0x9: LE Audio – Anrufstreaming
- 0xA: LE Audio – Übertragung
- 0xF: Verbindungswechsel vorübergehend deaktivieren (z.B. Firmwareupdate)
LE Audio-Kontexttyp und Verbindungsstatus
Wir empfehlen, dass der LE Audio-Anbieter alle in Assigned Numbers 6.12.3 angegebenen Kontexttypen verarbeitet (es sei denn, der Anbieter unterstützt einen bestimmten Kontexttyp nicht ausdrücklich) und den Kontexttyp wie unten dargestellt dem Verbindungsstatus zuordnet.
- Konversation: 0x9
- Medien: 0x8
- Spiel: 0x7
- Anleitung: 0x7
- Sprachassistenten: 0x9
- Live: 0x9
- Soundeffekte: 0x2
- Benachrichtigungen: 0x2
- Klingelton: 0x9
- Benachrichtigungen: 0x7
- Notfallalarm: 0x9
Für den gemischten LE Audio-Kontexttyp, z.B. die Wiedergabe von Medien während eines Anrufs, muss der Anbieter den Verbindungsstatus mit der höchsten Priorität verwenden, also 0x9 (Anruf) für das oben genannte Szenario anstelle von 0x8 (Medien).
Bitmap für verbundene Geräte
Um unerwünschte Verbindungswechsel zu vermeiden, muss der Sucher möglicherweise wissen, mit welchen Geräten das Headset derzeit verbunden ist. Wenn das Headset beispielsweise mit dem Smartphone verbunden ist, möchte der Nutzer nicht durch die Verbindungsweiterleitung unterbrochen werden, wenn eines seiner Familienmitglieder YouTube auf dem Tablet startet.
Diese Bitmap ist anonym. Der Sucher kann nicht sehen, welche anderen Geräte mit dem Anbieter verbunden sind. Nehmen wir als Beispiel fünf verbundene Geräte:
- 0: Laptop (0bx0000000)
- 1: phoneA (0b0x000000)
- 2: Smartphone B (0b00x00000)
- 3: Tablet (0b000x0000)
- 4: Fernseher (0b0000x000)
Wenn die aktuell verbundenen Geräte ein Laptop und ein Tablet sind, lautet der Wert der Bitmap 0b10010000. Die Reihenfolge der Schritte ist akzeptabel, wenn sie unvermeidlich ist, z.B. wenn Nutzer das Headset auf die Werkseinstellungen zurücksetzen oder die Anzahl der gekoppelten Geräte die Obergrenze erreicht.
Zufällig auflösbare Werbung
Um das Tracking zu vermeiden und die Privatsphäre der Nutzer zu schützen, sollte der Anbieter das Feld mit dem Kontoschlüssel mit AES-CTR rotieren und verschlüsseln:
encrypted_connection_status_field = connection_status_raw_data ^ AES(Key, IV)
Bitte wo?
Der Schlüssel wird aus dem in Verwendung befindlichen Kontoschlüssel abgeleitet, der im nächsten Abschnitt definiert wird.
Der Schlüssel wird von der HKDF-Funktion (IETF RFC 5869) mit der SHA-256-Hash-Funktion generiert.
Key = HKDF(account_key, NULL, UTF8("SASS-RRD-KEY"),16)
Der Anbieter muss hier den ursprünglichen Kontoschlüssel verwenden, d.h. das erste Byte des Schlüssels ist 0x04 und nicht im Nutzungsmuster enthalten.
Der IV (Initialisierungsvektor) ist das 2-Byte-Salt der Kontoschlüsseldaten mit Null-Padding, d.h. IV ist concat(salt, 14-byte ZEROs).
Die Rohdaten zum Verbindungsstatus sind in Tabelle 4.1 definiert. Wenn sich der Verbindungsstatus ändert, sollten Salt und RPA im selben Werbezeitraum neu generiert werden.
Dadurch wird das Feld „Verschlüsselter Verbindungsstatus“ gleichzeitig mit den Kontoschlüsseldaten rotiert.
Die BLE-Anzeigen haben folgende Struktur:
Oktett | Datentyp | Beschreibung | Wert | Ist das obligatorisch? |
---|---|---|---|---|
0 | uint8 |
Version und Flags | 0x10 | Obligatorisch |
1 – t | Kontoschlüsseldaten | variiert | Obligatorisch | |
t+1 – s | Akkudaten | variiert | Optional | |
s+1 – var | Zufällig auflösbare Daten | variiert | Erforderlich, wenn die Kontoschlüsselliste nicht leer ist, andernfalls „Ausgeschlossen“. |
Tabelle 4.2:BLE-Anzeigen mit zufällig auflösbaren Daten
Zufällig auflösbare Daten enthalten:
Oktett | Datentyp | Beschreibung | Wert | Ist das obligatorisch? |
---|---|---|---|---|
0 | uint8 |
Feldlänge und -typ 0bLLLLTTTT
|
0bLLLL0110
|
Obligatorisch |
1 – var | Verschlüsselte Daten | variiert | Obligatorisch |
Tabelle 4.2.1:Zufällig auflösbare Daten
Wenn die zufällig auflösbaren Daten beispielsweise ein verschlüsseltes Verbindungsstatus-Feld enthalten, ist das decodierte Ergebnis das Verbindungsstatus-Feld.
Um Manipulationen zu verhindern, sollten die Kontoschlüsseldaten oben leicht geändert werden, wenn die zufällig auflösbaren Daten in der Anzeige enthalten sind. Normalerweise wird beim Erstellen des Kontoschlüsselfilters ein Wert V durch Kombination des Kontoschlüsselfilters mit einem Salt generiert. Wenn auch zufällig auflösbare Daten beworben werden, sollte der Wert V so aufgebaut sein:
V = concat(account_key, salt, random_resolvable_data)
Wenn sowohl Akkudaten als auch zufällig auflösbare Daten angeboten werden, sollte V so aufgebaut sein:
V = concat(account_key, salt, battery_data, random_resolvable_data)
In Verwendung befindlicher Kontoschlüssel
Die Verbindungsweiterleitung erfolgt auf Kontobasis. Daher sollte der Anbieter die Kontoinformationen der aktuellen Verbindung in der BLE-Anzeigendatei angeben. Wenn das aktuell verbundene Gerät ein Audio-Switch-Sucher ist, sollte der Anbieter den mit diesem Sucher verknüpften Kontoschlüssel abrufen und mit diesem Kontoschlüssel das Verbindungsstatus-Feld verschlüsseln können. Wenn die verbundene Audioquelle kein Audioswitch Seeker ist, sollte der Anbieter den zuletzt verwendeten Kontoschlüssel verwenden.
Bevor der Anbieter den Kontoschlüsselfilter berechnet, sollte er das erste Byte der Kontoschlüssel so ändern, dass eines der folgenden Nutzungsmuster enthalten ist:
- 0b00000100
Dieser Kontoschlüssel wird nicht verwendet.
Das ist der Standardschlüssel (siehe Kontoschlüssel). - 0b00000101
Dieser Kontoschlüssel ist der zuletzt verwendete Kontoschlüssel.
Das Feld „Verbindungsstatus“ wird mit diesem Kontoschlüssel verschlüsselt. Es gibt keine Kontoschlüsselinformationen zum aktuellen Verbindungsstatus. Das kann bedeuten, dass keine Geräte verbunden sind oder dass das verbundene Gerät kein Audio-Schaltersucher ist. - 0b00000110
Dieser Kontoschlüssel ist der verwendete Kontoschlüssel.
Das Feld „Verbindungsstatus“ wird mit diesem Kontoschlüssel verschlüsselt und das aktuell verbundene Gerät ist mit diesem Kontoschlüssel verknüpft.
Schaltbild für Audio-Wechsel-Nutzlast
Die Abbildung unten zeigt das Schaltbild für die Audio-Switch-Nutzlast.

Nachrichten
Wenn eine Verbindung besteht, können Sucher und Anbieter den Nachrichtenstream verwenden, um die Audio-Umschaltfunktion zu synchronisieren, eine Verbindungsumschaltung auszulösen, die Umschaltpräferenz festzulegen und abzurufen, den Verbindungsstatus zu benachrichtigen usw. Wir erstellen eine Nachrichtengruppe und Nachrichtencodes, die speziell für den Audioschalter bestimmt sind (siehe unten).
Name der Nachrichtengruppe | Wert |
---|---|
Die „Audio-Wechsel“-Funktion | 0x07 |
Weitere Informationen zu den einzelnen Nachrichtencodes finden Sie in den folgenden Abschnitten.
Name des Nachrichtencodes | Wert | Nur Multipoint | Sender | Responder | Verschlüsseln | MAC | ACK |
---|---|---|---|---|---|---|---|
Funktion des Audio-Schalters abrufen | 0x10 | N | Beides | Beide, über Code 0x11 | N | Nein | N |
Benachrichtigungsfunktion für Audio-Wechsel | 0x11 | N | Beides | Beides | N | Ja | J |
Multipoint-Status festlegen | 0x12 | J | Sucher | Anbieter | N | Ja | J |
Umschalteinstellungen festlegen | 0x20 | J | Sucher | Anbieter | N | Ja | J |
Umstellungseinstellung abrufen | 0x21 | J | Sucher | Anbieter, über Code 0x22 | N | Nein | N |
Über Einstellung für den Wechsel benachrichtigen | 0x22 | J | Anbieter | Sucher | N | Nein | N |
Aktive Audioquelle wechseln(zu verbundenem Gerät) | 0x30 | J | Sucher | Anbieter | N | Ja | J |
Zurückwechseln | 0x31 | N | Sucher | Anbieter | N | Ja | J |
Über Multipoint-Switch-Ereignisse benachrichtigen | 0x32 | J | Anbieter | Sucher | N | Nein | N |
Verbindungsstatus abrufen | 0x33 | J | Sucher | Anbieter, über Code 0x34 | N | Nein | N |
Über Verbindungsstatus benachrichtigen | 0x34 | J | Anbieter | Sucher | J | Nein | N |
Über eine vom Audio-Schalter initiierte Verbindung benachrichtigen | 0x40 | N | Sucher | Anbieter | N | Ja | J |
Kontoschlüssel angeben, der verwendet wird | 0x41 | N | Sucher | Anbieter | N | Ja | J |
Benutzerdefinierte Daten senden | 0x42 | N | Sucher | Anbieter | N | Ja | J |
Ziel für Verbindungsunterbrechung festlegen | 0x43 | J | Sucher | Anbieter | N | Ja | J |
Tabelle 4.3:Audio-Wechselnachrichten
MAC-Adresse von Audio-Wechselnachrichten
Zur Nachrichtenauthentifizierung benötigen alle Audio-Switch-Nachrichten mit zusätzlichen Daten, die vom Sucher an den Anbieter gesendet werden, einen Nachrichtenauthentifizierungscode. Wenn eine Nachricht mit MAC empfangen wird, sollte sie bestätigt werden, damit der Sucher weiß, ob der Anbieter auf die Nachricht reagiert hat.
Wenn die Nachrichtenauthentifizierung erfolgreich ist, sendet der Anbieter die Bestätigung für die Nachricht:
Oktett | Datentyp | Beschreibung | Wert |
---|---|---|---|
0 | uint8 | Bestätigung | 0xFF |
1 | uint8 | ACK | 0x01 |
2–3 | uint16 | Zusätzliche Datenlänge | variiert |
4 | uint8 | Die „Audio-Wechsel“-Funktion | 0x07 |
5 | uint8 | Audio-Wechsel-Nachrichtencode | variiert |
6 – s | Zusätzliche Daten | variiert |
Wenn der Vorgang fehlschlägt, sendet der Anbieter eine NAK-Nachricht für die Nachricht:
Oktett | Datentyp | Beschreibung | Wert |
---|---|---|---|
0 | uint8 | Bestätigung | 0xFF |
1 | uint8 | NAK | 0x02 |
2–3 | uint16 | Zusätzliche Datenlänge | 0x0003 |
4 | uint8 | Fehlerursache | variiert |
5 | uint8 | Die „Audio-Wechsel“-Funktion | 0x07 |
6 | uint8 | Audio-Wechsel-Nachrichtencode | variiert |
Wenn der Anbieter der Absender ist, ist keine MAC erforderlich.
Audio-Wechsel abrufen
Sowohl der Audio-Switch-Anbieter als auch der Sucher können mit der folgenden Nachricht prüfen, ob der verbundene Fast Pair-Sucher/-Anbieter den Audio-Switch unterstützt:
Oktett | Datentyp | Beschreibung | Wert |
---|---|---|---|
0 | uint8 | Die „Audio-Wechsel“-Funktion | 0x07 |
1 | uint8 | Audio-Wechsel abrufen | 0x10 |
2–3 | uint16 | Zusätzliche Datenlänge | 0 |
Tabelle 4.3.1.0:Audio-Wechselfunktion abrufen
Benachrichtigungsfunktion für den Audio-Wechsel
Nach Erhalt des Nachrichtencodes get capability of Audio switch antwortet der Sucher/Anbieter für den Audio-Wechsel mit einer der folgenden Flags:
Oktett | Datentyp | Beschreibung | Wert |
---|---|---|---|
0 | uint8 | Die „Audio-Wechsel“-Funktion | 0x07 |
1 | uint8 | Benachrichtigungsfunktion für den Audio-Wechsel | 0x11 |
2–3 | uint16 | Zusätzliche Datenlänge | 20, wenn dies vom Nutzer gesendet wird 4, wenn dies vom Anbieter gesendet wird |
4–5 | uint16 | Versionscode des Audio-Wandlers | Ein Wert ungleich 0 bedeutet, dass die Audio-Umschaltung unterstützt wird. Der Code der aktuellen Version (mit der Sicherheitsverbesserung) lautet 0x0102. 0x0000 oder keine Antwort innerhalb von 1 Sekunde bedeutet, dass die Audio-Umschaltung auf diesem Gerät nicht unterstützt wird. |
6–7 | flags | Flags für die Audio-Umschaltfunktion des Anbieters Wenn diese von Seeker gesendet werden, sollten diese beiden Bytes ignoriert werden. |
variiert Flags für Audio-Wechselfunktionen |
8–15 | Nachrichten-Nonce Nur erforderlich, wenn diese von Seeker gesendet wird |
variiert | |
16–23 | Nachrichtenauthentifizierungscode Nur erforderlich, wenn diese Nachricht von Seeker gesendet wird |
variiert |
Tabelle 4.3.1.1:Benachrichtigungsfunktion für den Audio-Wechsel
Flags für Audio-Wechselfunktionen
Bit 0 (Oktett 6, MSB): Status des Audio-Schalters
- „1“, wenn der Status des Audio-Schalters aktiviert ist
- 0, andernfalls
Bit 1: Multipoint-Konfiguration
- „1“, wenn das Gerät Multipoint unterstützt und die Funktion aktiviert oder deaktiviert werden kann
- 0, andernfalls (Multipoint wird nicht unterstützt oder Multipoint ist immer aktiviert)
Bit 2: Aktueller Multipoint-Status
- 1, wenn Multipoint aktiviert ist
- 0, andernfalls
Bit 3: Erkennung, dass Kopfhörer auf dem Kopf getragen werden
- „1“, wenn dieses Gerät die Erkennung, ob Kopfhörer getragen werden, unterstützt (auch wenn diese Funktion derzeit deaktiviert ist)
- 0, andernfalls
Bit 4: Aktueller Status der Erkennung, dass die Smartwatch getragen wird
- 1, wenn die Erkennung, ob die Kopfhörer auf dem Kopf getragen werden, aktiviert ist
- 0, andernfalls (On-Head-Erkennung wird nicht unterstützt oder ist deaktiviert)
Alle anderen Bits sind reserviert, Standardwert 0.
Multipoint-Status festlegen
Bei Audio-Suchern können wir Nutzern die Möglichkeit geben, die Multipoint-Funktion zu aktivieren oder zu deaktivieren. Der Sucher setzt den Multipoint-Status für den Anbieter mit der folgenden Nachricht:
Oktett | Datentyp | Beschreibung | Wert |
---|---|---|---|
0 | uint8 | Die „Audio-Wechsel“-Funktion | 0x07 |
1 | uint8 | Multipoint-Status festlegen | 0x12 |
2–3 | uint16 | Zusätzliche Datenlänge | 17 |
4 | uint8 | Multipoint-Status | 0: Multipoint deaktivieren 1: Multipoint aktivieren |
5–12 | Nachrichten-Nonce | variiert | |
13–20 | Nachrichtenauthentifizierungscode | variiert |
Tabelle 4.3.1.2:Multipoint-Status festlegen
Einstellung für den Wechsel festlegen
Nutzer, die nach einer Audio-Umschaltung suchen, können die Umschaltungseinstellung für Multipoint ändern und sie mit der folgenden Nachricht auf den Anbieter festlegen:
Oktett | Datentyp | Beschreibung | Wert |
---|---|---|---|
0 | uint8 | Die „Audio-Wechsel“-Funktion | 0x07 |
1 | uint8 | Einstellung für den Wechsel festlegen | 0x20 |
2–3 | uint16 | Zusätzliche Datenlänge | 18 |
4 | flags | Einstellung für Wechsel | variiert Siehe Flag für die Multipoint-Umschaltung |
5 | Erweiterte Schalteinstellungen Dieses Byte ist reserviert, Standardwert ist 0. |
variiert | |
6–13 | Nachrichten-Nonce | variiert | |
14–21 | Nachrichtenauthentifizierungscode | variiert |
Tabelle 4.3.2.0:Einstellung für den Wechsel festlegen
Flag für die Einstellung für den Multipoint-Wechsel
- Bit 0 (MSB): A2DP im Vergleich zu A2DP (Standardwert 0)
- Bit 1: HFP oder HFP (Standardwert 0)
- Bit 2: A2DP oder HFP (Standard 0)
- Bit 3: HFP oder A2DP (Standard 1)
- Bit 4–7: reserviert
- Oben ist „Anfrage für neues Profil“ im Vergleich zu „Aktuelles aktives Profil“ dargestellt.
- 0 für „Nicht wechseln“
- 1 für Umschalten
Einstellung für die Umschaltung abrufen
Sucher nach Audio-Umschaltern können die Umschaltpräferenz für Multipoint mit der folgenden Nachricht beim Anbieter abfragen:
Oktett | Datentyp | Beschreibung | Wert |
---|---|---|---|
0 | uint8 | Die „Audio-Wechsel“-Funktion | 0x07 |
1 | uint8 | Umschaltkonfiguration abrufen | 0x21 |
2–3 | uint16 | Zusätzliche Datenlänge | 0 |
Tabelle 4.3.2.1:Einstellung für den Wechsel abrufen
Benachrichtigungseinstellungen für den Wechsel
Oktett | Datentyp | Beschreibung | Wert |
---|---|---|---|
0 | uint8 | Die „Audio-Wechsel“-Funktion | 0x07 |
1 | uint8 | Benachrichtigungseinstellungen für den Wechsel | 0x22 |
2–3 | uint16 | Zusätzliche Datenlänge | 2 |
4 | flags | Flags für die Einstellungsänderung | variiert Siehe Flag für die Multipoint-Umschaltung |
5 | Erweiterte Schalteinstellungen Dieses Byte ist reserviert. Der Standardwert sollte 0 sein. |
variiert |
Tabelle 4.3.2.2:Benachrichtigung bei Umschalten
Aktive Audioquelle wechseln (zu verbundenem Gerät)
Nutzer, die den Audio-Wechsel nutzen möchten, können den Multipoint-Anbieter mit der folgenden Nachricht bitten, die aktive Audioquelle zwischen verbundenen Geräten zu wechseln:
Oktett | Datentyp | Beschreibung | Wert |
---|---|---|---|
0 | uint8 | Die „Audio-Wechsel“-Funktion | 0x07 |
1 | uint8 | Aktive Audioquelle wechseln (zu verbundenem Gerät) | 0x30 |
2–3 | uint16 | Zusätzliche Datenlänge | 17 |
4 | flags | Ereignis-Flags für aktive Audioquellen wechseln | variiert Wechsel der aktiven Audioquelle |
5–12 | Nachrichten-Nonce | variiert | |
13–20 | Nachrichtenauthentifizierungscode | variiert |
Tabelle 4.3.3.0:Aktive Audioquelle wechseln (zu verbundenem Gerät)
Ereignis „Aktive Audioquelle wechseln“
- Bit 0 (MSB): „1“ für Umschalten zu diesem Gerät, „0“ für Umschalten zum zweiten verbundenen Gerät
- Bit 1: „1“ – Wiedergabe wird nach dem Wechsel fortgesetzt, „0“ – andernfalls. Wenn die Wiedergabe fortgesetzt wird, sendet der Anbieter eine PLAY-Benachrichtigung über das AVRCP-Profil an den Sucher. Wenn der vorherige Status (vor dem Wechsel) nicht „PLAY“ war, sollte der Anbieter dieses Flag ignorieren.
- Bit 2: „1“ – SCO auf dem Gerät ablehnen, auf dem die Verbindung getrennt wurde, andernfalls „0“
- Bit 3: „1“ trennt Bluetooth, wenn das Gerät ausgeschaltet wird, andernfalls „0“.
- Bit 4–7: Reserviert.
Sucher für Audio-Umschaltungen kennen ihren Status möglicherweise nicht immer korrekt. Daher kann es vorkommen, dass der Anbieter die Nachricht „Zu diesem Gerät wechseln“ erhält, wenn das Gerät des Suchers bereits aktiv ist. In diesem Fall kann der Anbieter einen NAK mit dem Fehlergrund 0x4 – Redundante Geräteaktion senden, um die richtige Benutzeroberfläche auf dem Sucher anzuzeigen.
Wenn ein LE Audio-Anbieter mehr als ein Setmitglied hat, sollte er alle Mitglieder vom Sucher trennen, da sich sonst der Bluetooth-Stack des Suchers wieder mit dem Anbieter verbindet.
Zurückwechseln (zu getrenntem Gerät)
Wenn die Verbindungsweiterleitung nicht gewünscht ist, können Nutzer sie rückgängig machen. In bestimmten Fällen ist es sinnvoll, die Audioverbindung wiederherzustellen, um Unterbrechungen zu minimieren. Der Suchende löst mit der folgenden Nachricht den Wechsel aus:
Oktett | Datentyp | Beschreibung | Wert |
---|---|---|---|
0 | uint8 | Die „Audio-Wechsel“-Funktion | 0x07 |
1 | uint8 | Zurückwechseln (zum getrennten Gerät) | 0x31 |
2–3 | uint16 | Zusätzliche Datenlänge | 17 |
4 | uint8 | Ereignis zurückschalten | variiert 0x01: Zurückschalten 0x02: Zurückschalten und Wiedergabe fortsetzen |
5–12 | Nachrichten-Nonce | variiert | |
13–20 | Nachrichtenauthentifizierungscode | variiert |
Tabelle 4.3.3.1:Zurückwechseln (zu einem getrennten Gerät)
Bei Multipoint-Anbietern kann ein Anbieter die Verbindung zu einem Audioquellengerät trennen und die Audiositzung an der anderen Audioquelle pausieren, um die Verbindung zu wechseln. Angenommen, das Multipoint-Headset ist mit einem Tablet und einem dritten unterstützten Audio-Wechselgerät verbunden. Der Nutzer sieht sich auf dem Tablet ein Video an, als er einen Anruf auf seinem Smartphone erhält. Das Smartphone löst einen Verbindungswechsel am Headset aus, wodurch die Verbindung des Drittanbieters getrennt werden muss, um eine Verbindung zum Smartphone herzustellen. Gleichzeitig wird die Mediensitzung auf dem Tablet pausiert, damit der Klingelton vom Smartphone abgespielt werden kann. Wenn der Nutzer den Anruf ablehnt, fordert das Smartphone das Headset möglicherweise auf, „zurückzuschalten und die Wiedergabe fortzusetzen“. Nach Erhalt dieser Anfrage muss das Headset wieder mit dem dritten Gerät verbunden werden und die Wiedergabe des pausierten Videos auf dem Tablet fortgesetzt werden.
Multipoint-Switch-Ereignis benachrichtigen
Um Nutzer über ein Multipoint-Switch-Ereignis zu informieren, kann der Audio-Switch-Sucher eine Benachrichtigung anzeigen. Der Anbieter sollte verbundene Audio-Sucher über das Schaltereignis informieren.
Oktett | Datentyp | Beschreibung | Wert |
---|---|---|---|
0 | uint8 | Die „Audio-Wechsel“-Funktion | 0x07 |
1 | uint8 | Multipoint-Wechsel-Ereignis benachrichtigen Der Anbieter sollte es bei jedem Wechsel senden, einschließlich Audio-Wechsel-Sucher an Nicht-Audio-Wechsel-Sucher, Nicht-Audio-Wechsel-Sucher an Audio-Wechsel-Sucher und Audio-Wechsel-Sucher an Audio-Wechsel-Sucher. |
0x32 |
2–3 | uint16 | Zusätzliche Datenlänge | variiert |
4 | uint8 | Grund für die Umschaltung Dieser Wert sollte anhand des Verbindungsstatus bestimmt werden. Für LE Audio-Anwendungsfälle kann es hilfreich sein, sich die Zuordnung zwischen LE Audio-Kontexttyp und Verbindungsstatus anzusehen. Der Verbindungsstatus für Sprachassistenten ist beispielsweise 0x9(LE-Audio – Anrufstreaming). Der Grund für den Wechsel, der von Sprachassistenten initiiert wurde, sollte also 0x02 sein. |
variiert 0x00: Nicht spezifiziert 0x01: Medien (z.B. A2DP-Streaming, LEA-Medienstreaming) 0x02: Anruf (z.B. HFP-Streaming, LEA-Anrufstreaming) |
5 | uint8 | Zielgerät | variiert 0x01: dieses Gerät 0x02: ein anderes verbundenes Gerät |
6 – n | utf8 | Name des Zielgeräts Wenn das Zielgerät der Audio-Sucher ist, wird der Name verwendet, an den der Sucher gesendet wurde. Andernfalls wird der BT-Name verwendet. Ist dieser nicht zutreffend, werden die letzten beiden Bytes der Adresse verwendet. |
variiert |
Tabelle 4.3.3.2:Benachrichtigung über Multipoint-Switch-Ereignis
Verbindungsstatus abrufen
Der Suchende kann den aktuellen Verbindungsstatus vom Anbieter abrufen:
Oktett | Datentyp | Beschreibung | Wert |
---|---|---|---|
0 | uint8 | Die „Audio-Wechsel“-Funktion | 0x07 |
1 | uint8 | Verbindungsstatus abrufen | 0x33 |
2–3 | uint16 | Zusätzliche Datenlänge | 0 |
Tabelle 4.3.3.3:Verbindungsstatus abrufen
Nach Erhalt dieser Nachricht antwortet der Anbieter mit dem Nachrichtencode 0x34, notify connection status.
Über Verbindungsstatus benachrichtigen
Wie in der BLE-Werbenutzlast definiert, sollte der Anbieter bei Multipoint-Anbietern, wenn sich der Verbindungsstatus ändert, zusätzlich zu dem Ändern des Werbepakets auch die verbundenen Sucher, die denselben Kontoschlüssel verwenden, über die Änderung informieren. Wenn der Anbieter mit einem Audio- und einem Nicht-Audio-Sucher verbunden ist und der Nicht-Audio-Sucher aktiv ist, sollte der Anbieter den verbundenen Audio-Sucher über den Verbindungsstatus informieren (mit dem Kontoschlüssel des Suchers).
Oktett | Datentyp | Beschreibung | Wert |
---|---|---|---|
0 | uint8 | Die „Audio-Wechsel“-Funktion | 0x07 |
1 | uint8 | Über Verbindungsstatus benachrichtigen | 0x34 |
2–3 | uint16 | Zusätzliche Datenlänge | variiert |
4 | uint8 | Flag für aktives Gerät | variiert 0x00: Dieser Sucher ist passiv und das aktive Gerät verwendet denselben Kontoschlüssel. 0x01: Dieses Gerät ist der aktive Sucher. 0x02: Dieser Sucher ist passiv und das aktive Gerät ist kein Audio-Schalter-Sucher. |
5 – n | Status der verschlüsselten Verbindung | variiert | |
n+1 – n+8 | Nachrichten-Nonce | variiert |
Tabelle 4.3.3.4:Verbindungsstatus benachrichtigen
Statusnachricht für verschlüsselte Verbindung
encrypted_connection_status = connection_status_raw_data ^ AES(Key, IV)
Dabei gilt:
Der Schlüssel wird aus dem verwendeten Kontoschlüssel abgeleitet. Weitere Informationen finden Sie unter Zufällig auflösbare Werbung.
Key = HKDF(account_key, NULL, UTF8("SASS-RRD-KEY"),16)
IV ist concat(Session_nonce, Message_nonce)
„connection_status_raw_data“ = concat(„connection_state“, „custom_data“, „connected_devices“), definiert in der BLE-Werbenutzlast. Hinweis: Das Byte für Feldlänge und -typ sollte nicht enthalten sein, da wir hier den Nachrichtencode und die Datenlänge haben.
Über eine vom Audio-Wechsel initiierte Verbindung benachrichtigen
Anbieter von Audio-Schaltern müssen möglicherweise wissen, ob die Verbindungsweiterleitung durch den Audio-Schalter ausgelöst wird, um unterschiedliche Reaktionen zu erzielen, z.B. die Deaktivierung von Hörsignalen für Audio-Schalterereignisse. Der Sucher sendet eine Nachricht, um den Anbieter darüber zu informieren, dass diese Verbindung von einem Audio-Switch initiiert wurde.
Oktett | Datentyp | Beschreibung | Wert |
---|---|---|---|
0 | uint8 | Die „Audio-Wechsel“-Funktion | 0x07 |
1 | uint8 | Über eine vom Audio-Wechsel initiierte Verbindung benachrichtigen | 0x40 |
2–3 | uint16 | Zusätzliche Datenlänge | 17 |
4 | uint8 | Verbindungsanzeige für den Audio-Wechsel | variiert 0: Diese Verbindung wurde nicht durch den Audio-Wechsel ausgelöst. 1: Diese Verbindung wurde durch den Audio-Wechsel initiiert. |
5–12 | Nachrichten-Nonce | variiert | |
13–20 | Nachrichtenauthentifizierungscode | variiert |
Tabelle 4.3.4.0:Benachrichtigung über eine vom Audio-Schalter initiierte Verbindung
Verwendeten Kontoschlüssel angeben
Wenn dem Anbieter mehrere Kontoschlüssel auf dem Sucher (z.B. mehrere Nutzer) zugeordnet sind, gibt der Sucher mit der folgenden Meldung an, welcher Kontoschlüssel verwendet wird.
Oktett | Datentyp | Beschreibung | Wert |
---|---|---|---|
0 | uint8 | Die „Audio-Wechsel“-Funktion | 0x07 |
1 | uint8 | Verwendeten Kontoschlüssel angeben | 0x41 |
2–3 | uint16 | Zusätzliche Datenlänge | 22 |
4–9 | utf8 | String „In Verwendung“ | UTF8 („in use“) |
10–17 | Nachrichten-Nonce | variiert | |
18–25 | Nachrichtenauthentifizierungscode | variiert |
Tabelle 4.3.4.1:Kontoschlüssel angeben, der verwendet wird
Nach Erhalt dieser Nachricht kann der Anbieter durch Überprüfung des Nachrichtenauthentifizierungscodes feststellen, welcher Kontoschlüssel verwendet wird.
Benutzerdefinierte Daten senden
Der aktive Audio-Switch-Sucher kann die Informationen (z.B. die Audionutzung) des Audiostreams in einem benutzerdefinierten Datenbyte kapseln und mit der folgenden Nachricht an den Anbieter senden:
Oktett | Datentyp | Beschreibung | Wert |
---|---|---|---|
0 | uint8 | Die „Audio-Wechsel“-Funktion | 0x07 |
1 | uint8 | Benutzerdefinierte Daten senden | 0x42 |
2–3 | uint16 | Zusätzliche Datenlänge | 17 |
4 | uint8 | Benutzerdefinierte Daten | variiert |
5–12 | Nachrichten-Nonce | variiert | |
13–20 | Nachrichtenauthentifizierungscode | variiert |
Tabelle 4.3.4.2:Benutzerdefinierte Daten senden
Nach Erhalt der benutzerdefinierten Daten aktualisiert der Anbieter das Werbepaket, um die benutzerdefinierten Daten einzubeziehen. Bei einem Multipoint-Anbieter sollte auch der Verbindungsstatus für einen anderen verbundenen Sucher mit demselben Kontoschlüssel geändert werden.
Ziel für Verbindungsunterbrechung festlegen
Wenn bei Multipoint-Headsets die bevorzugte Verbindung nicht diejenige ist, die zuletzt verwendet wurde, können Nutzer, die den Audio-Wechsel suchen, dem Anbieter mit der folgenden Nachricht mitteilen, welches Gerät getrennt werden soll:
Oktett | Datentyp | Beschreibung | Wert |
---|---|---|---|
0 | uint8 | Die „Audio-Wechsel“-Funktion | 0x07 |
1 | uint8 | Ziel für Verbindungsunterbrechung festlegen | 0x43 |
2–3 | uint16 | Zusätzliche Datenlänge | 17 |
4 | uint8 | Ziel verbundenes Gerät, das getrennt werden soll | variiert 1: Dieses Gerät |
5–12 | Nachrichten-Nonce | variiert | |
13–20 | Nachrichtenauthentifizierungscode | variiert |
Tabelle 4.3.4.3:Ziel der Verbindung zum Löschen festlegen