Audiowechsel
Da Nutzer für ihre täglichen Aufgaben zunehmend mehrere Audioquellen verwenden, steigt die Nachfrage nach einer einfacheren Lösung, um die Headsetnutzung geräteübergreifend zu verwalten. Mit der Funktion „Audio-Wechsel“ werden Headset-Verbindungen basierend auf Nutzeraktivität (z.B. Start eines Films) und priorisierten Ereignissen (z.B. eingehender Anruf) nahtlos zwischen Geräten gewechselt.
UX-Prinzipien
- Die Verbindungen sollten schnell und auf Grundlage der Nutzeraktion gewechselt werden.
- Der Verbindungswechsel sollte für Nutzer transparent sein, sodass Nutzer ihn steuern und zurücknehmen können, falls er nicht erwünscht ist.
- Beim Wechsel sollte die Privatsphäre der Nutzer respektiert werden.
Rollen
Auf der Suche nach einem Audio-Wechsel: Der Seeker ist ein Audioquellengerät (z. B. ein Smartphone oder Tablet), das nach einem Headset in der Nähe sucht, um es gegebenenfalls zu verbinden.
Anbieter für Audiowechsel: Der Anbieter ist normalerweise ein Headset, mit dem Nutzer auf der Suche nach einem Wechsel über dessen Präsenz und Verbindungsstatus informiert werden.
Überblick über die Anforderungen
Für einen intelligenten Wechsel müssen Dienstleister die folgenden Anforderungen erfüllen:
Name | Beschreibung | Voraussetzungen | Obligatorisch? |
---|---|---|---|
Seitenscan | So akzeptieren Sie eine neue Verbindungsanfrage von einem anderen Seefahrer, wenn bereits eine Verbindung besteht. Für Single-Point-Anbieter:
|
Der Seitenscanmodus mit niedriger Latenz (das Scanintervall sollte nicht größer als 640 ms sein) ist erforderlich, um die Leistung zu verbessern. Um einen Kompromiss zwischen Akkulaufzeit und der Leistung beim Wechsel zu finden, kann der Anbieter in den meisten Fällen einen Standardscanmodus für Seiten einrichten (bei Energiesparmodus sollte das Scanintervall nicht größer als 1280 ms sein). In folgenden Situationen muss der Modus mit niedriger Latenz jedoch verwendet werden:
|
Erforderlich |
Verbindungsverlauf | Wenn du zur vorherigen Verbindung zurückwechseln und ggf. die Wiedergabe fortsetzen möchtest. Der Wechsel wird durch die Kommunikation über Message Stream APIs ausgelöst. Das pausierte Audioereignis sollte im Datensatz enthalten sein, damit die Wiedergabe gegebenenfalls fortgesetzt wird. |
Verwalten Sie den Verbindungsverlauf und implementieren Sie Message Stream APIs. | Erforderlich |
Verbindungsstatus | Nutzer können den Verbindungswechsel beurteilen.Der Verbindungsstatus umfasst:
|
Fügen Sie den Verbindungsstatus in BLE-Werbung und Message Stream ein. | Erforderlich |
Änderung der Laufzeitfunktionen | Der Audio-Wechsel kann durch ein Upgrade der Firmware des Anbieters aktiviert werden, sodass die Funktionen zwischen Seeker und Anbieter zur Laufzeit synchronisiert werden müssen. | Implementieren Sie Message Stream APIs, um auf Laufzeitfunktionen zuzugreifen. | Erforderlich |
Konfigurierbare Wechselregeln | Der Seefahrer kann über die Nutzereinstellungen die Priorität zwischen bestehenden aktiven Audiostreaming- und neuen Audiostreaminganfragen konfigurieren. Der „Audio-Wechsel“-Suchdienst kann beispielsweise UI-Einstellungen bereitstellen, mit denen Nutzer den automatischen Wechsel zwischen Medienstreaming und Anrufen aktivieren/deaktivieren können. Der Nutzer, der den Audio-Wechsel sucht, legt die Regel zum Wechsel über Message Stream fest und erhält sie. |
Nur für Multipoint-Anbieter. Implementiere Message Stream APIs, um die Regeln für den Wechsel zwischen verbundenen Geräten konfigurierbar zu machen. |
Optional |
Aktiver Gerätewechsel | Die Audio-Wechsel-Suche kann den Audio-Wechsel zwischen verbundenen Geräten simulieren. Auf der Seite „Audio-Wechsel-Suchanfrage“ gibt es möglicherweise eine Benutzeroberfläche, mit der Nutzer ganz einfach zwischen verbundenen Geräten wechseln können. |
Nur Multipoint-Anbieter. Implementiere Message Stream APIs für die Suche nach Audio-Wechsel, um die aktive Audioquelle zwischen verbundenen Geräten zu ermitteln. |
Erforderlich |
Benachrichtigung beim Mehrpunktwechsel | Der Sucher für den Audio-Wechsel kann die Benachrichtigung zum Wechseln anzeigen. | Nur für Multipoint-Anbieter. Implementiere Message Stream APIs, um Nutzer, die verbundene Audio-Wechsel-Netzwerke suchen, zu benachrichtigen, wenn ein Multipunkt-Wechsel stattfindet. |
Erforderlich |
Werbenutzlast
Der Anbieter muss seinen aktuellen Verbindungsstatus in die Werbung aufnehmen, der auf den unter Werbung: Wenn nicht auffindbar beschriebenen Kontodaten durch schnelles Pairing aufbaut.
Beachten Sie, dass die Version von Tabelle 4.2 0x1 ist.
Feld „Verbindungsstatus“
Oktett | Datentyp | Beschreibung | Wert | Obligatorisch? |
---|---|---|---|---|
0 | uint8 |
Feldlänge und -typ 0bLLLLTTTT
|
0bLLLL0101
|
Erforderlich |
1 | uint8 |
Verbindungsstatus 0bHAFRSSSS
|
0bHAFRSS
|
Erforderlich |
2 | uint8 |
Benutzerdefinierte Daten Derzeit enthalten sie nur den Inhaltstyp, der dazu dient, die Nutzung des aktuellen Audiostreamings zu beschreiben. Der Suchende sendet es an den Dienstleister. |
Der Wert wird vom Suchenden des aktuell aktiven Streamings über den Nachrichtenstream an den Anbieter gesendet. 0, wenn das aktuell aktive Streaming nicht von Seeker stammt. | Erforderlich |
3 – var | Bitmap der verbundenen Geräte Eine Bitmap, die zeigt, welche Geräte derzeit mit dem Anbieter verbunden sind. Alle gebundenen Geräte werden der Reihe nach angeordnet, ein Bit für ein verbundenes Gerät. Die Länge hängt davon ab, wie viele gebundene Geräte vom Anbieter vorhanden 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 aus dem Feld für den Verbindungsstatus
Verbindungs-Flags
0bH = bei Kopferkennung
- 1, jetzt auf dem Kopf
- 0, andernfalls nicht am Kopf oder kein OHD-Sensor
0bA = Verbindungsverfügbarkeit
- 1, es ist eine Verbindung verfügbar
- 0, andernfalls
0bF = Fokusmodus
- 1. Im fokussierten Modus ist der Verbindungswechsel für die Mediennutzung nicht zulässig, d. h. kein A2DP-zu-A2DP-Wechsel
- 0, andernfalls
0bR = automatisch wieder verbunden
- 1, wenn die aktuelle Verbindung vom Provider automatisch wiederhergestellt wird, d. h. nicht von Nutzern verbunden ist (bei Multipoint-Verbindungen sollte eine der vorhandenen Verbindungen automatisch wieder hergestellt werden, sollte sie auf 1 gesetzt werden)
- 0, andernfalls
Verbindungsstatus
- 0x0: keine Verbindung
- 0 x 1: Paging
- 0x2: verbunden, aber keine Datenübertragung
- 0x3: Nicht-Audio-Datenübertragung (nur wenn umschaltbar, wenn nicht, mit 0xF)
- 0x4: A2DP-Streaming, AVRCP nicht anwendbar
- 0 x 5: A2DP-Streaming und AVRCP-Wiedergabe
- 0x6: HFP-Streaming (Telefon-/Voip-Anruf), einschließlich Inband- und Nicht-Band-Klingelton
- 0 x 7: LE Audio – Medienstreaming ohne Steuerung
- 0x8: LE Audio – Mediastreaming mit Steuerung
- 0x9: LE Audio – Anrufstreaming
- 0xA: LE Audio – Übertragung
- 0xF: Verbindungswechsel vorübergehend deaktivieren (z.B. Firmware-Update)
Bitmap des verbundenen Geräts
Um einen unerwünschten Verbindungswechsel zu vermeiden, muss der Nutzer möglicherweise wissen, mit welchen Geräten das Headset derzeit verbunden ist. Wenn beispielsweise das Headset mit dem Smartphone verbunden ist, möchte der Nutzer nicht durch den Verbindungswechsel unterbrochen werden, wenn eines seiner Familienmitglieder YouTube auf dem Tablet startet.
Beachten Sie, dass diese Bitmap anonym ist. Der Suchende kann nicht wissen, welche anderen Geräte mit dem Anbieter verbunden sind. Nehmen wir zum Beispiel fünf verbundene Geräte:
- 0: Laptop (0bx0000000)
- 1: phoneA (0b0x000000)
- 2: phoneB (0b00x00000)
- 3: Tablet (0b000x0000)
- 4: TV (0b0000x000)
Wenn die derzeit verbundenen Geräte ein Laptop und ein Tablet sind, lautet der Wert der Bitmap 0b10010000. Die Bestelländerung ist akzeptabel, wenn sie unvermeidbar ist, z.B. wenn Nutzer das Headset auf die Werkseinstellungen zurücksetzen oder wenn die Anzahl der verbundenen Geräte die Obergrenze erreicht.
Zufällige auflösbare Anzeige
Um eine Nachverfolgung zu vermeiden und die Privatsphäre der Nutzer zu respektieren, 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)
wobei
Der Schlüssel wird vom verwendeten 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 Verwendungsmuster enthalten.
IV (erster Vektor) ist der 2-Byte-Salt der Kontoschlüsseldaten ohne Auffüllung, d.h. IV ist concat(Salt, 14-Byte-Nullen).
Die Rohdaten für den Verbindungsstatus sind in Tabelle 4.1 definiert. Wenn sich der Verbindungsstatus ändert, sollten der Salt und RPA im selben Werbezeitraum neu generiert werden.
Dadurch wird das Feld mit dem Status der verschlüsselten Verbindung gleichzeitig mit den Kontoschlüsseldaten rotiert.
Die BLE-Anzeige wird folgendermaßen strukturiert:
Oktett | Datentyp | Beschreibung | Wert | Obligatorisch? |
---|---|---|---|---|
0 | uint8 |
Version und Flags | 0x10 | Erforderlich |
1–t | Kontoschlüsseldaten | variiert | Erforderlich | |
t+1–s | Akkudaten | variiert | Optional | |
s+1 – var | Zufällige auflösbare Daten | variiert | Obligatorisch, wenn die Liste der Kontoschlüssel nicht leer ist, andernfalls ausgeschlossen. |
Tabelle 4.2:BLE-Werbung mit zufällig auflösbaren Daten
Zufällige auflösbare Daten enthalten:
Oktett | Datentyp | Beschreibung | Wert | Obligatorisch? |
---|---|---|---|---|
0 | uint8 |
Feldlänge und -typ 0bLLLLTTTT
|
0bLLLL0110
|
Erforderlich |
1 – var | Verschlüsselte Daten | variiert | Erforderlich |
Tabelle 4.2.1:Zufällige auflösbare Daten
Wenn beispielsweise die zufälligen auflösbaren Daten ein Feld für den verschlüsselten Verbindungsstatus enthalten, ist das entschlüsselte Ergebnis das Feld „Verbindungsstatus“.
Um Manipulationen zu verhindern, sollten die obigen Kontoschlüsseldaten leicht geändert werden, wenn die zufällige auflösbaren Daten im Advertising enthalten sind. Normalerweise wird beim Erstellen des Kontoschlüsselfilters ein Wert V erzeugt, indem der Kontoschlüsselfilter mit einem Salt kombiniert wird. Wenn stattdessen auch zufällige auflösbare Daten beworben werden, sollte der Wert V so erstellt werden:
V = concat(account_key, salt, random_resolvable_data)
Wenn sowohl Akkudaten als auch zufällige auflösbare Daten beworben werden, sollte V so aufgebaut sein:
V = concat(account_key, salt, battery_data, random_resolvable_data)
Kontoschlüssel in Verwendung
Der Verbindungswechsel erfolgt kontobasiert, daher sollte der Anbieter die Kontoinformationen der aktuellen Verbindung in das BLE-Advertising aufnehmen. Wenn das aktuell verbundene Gerät ein Audio-Switch sucht, sollte der Anbieter den mit diesem Sucher verknüpften Kontoschlüssel abrufen und diesen Kontoschlüssel zum Verschlüsseln des Verbindungsstatusfelds verwenden können. Wenn die verbundene Audioquelle nicht nach einem Audio-Wechsel sucht, sollte der Anbieter den zuletzt verwendeten Kontoschlüssel verwenden.
Vor der Berechnung des Kontoschlüsselfilters sollte der Anbieter das erste Byte der Kontoschlüssel so ändern, dass eines der folgenden Nutzungsmuster vorhanden ist:
- 0b00000100
Dieser Kontoschlüssel wird nicht verwendet.
Dies ist die Standardeinstellung (siehe Kontoschlüssel). - 0b00000101
Dieser Kontoschlüssel ist der zuletzt verwendete Kontoschlüssel.
Das Feld für den Verbindungsstatus wird mit diesem Kontoschlüssel verschlüsselt. Es sind keine Kontoschlüsselinformationen für den aktuellen Verbindungsstatus vorhanden. Dies kann bedeuten, dass keine Geräte verbunden sind oder das verbundene Gerät nicht auf der Suche nach Audio-Wechsel ist. - 0b00000110
Dieser Kontoschlüssel ist der verwendete Kontoschlüssel.
Das Feld für den Verbindungsstatus wird mit diesem Kontoschlüssel verschlüsselt und das aktuell verbundene Gerät ist mit diesem Kontoschlüssel verknüpft.
Schema für Audio-Switch-Nutzlast
Die folgende Abbildung zeigt das Schema für die Nutzlast „Audio-Wechsel“.
Nachrichten
Wenn die Verbindung hergestellt ist, können der Sucher und der Anbieter den Nachrichtenstream verwenden, um die Funktion zum Audiowechsel zu synchronisieren, einen Verbindungswechsel auszulösen, die Schaltpräferenz festzulegen und abzurufen, den Verbindungsstatus zu benachrichtigen usw. Unten sehen Sie, wie Sie eine Nachrichtengruppe und spezielle Nachrichtencodes für den Audio-Wechsel erstellen.
Name der Nachrichtengruppe | Wert |
---|---|
Die „Audio-Wechsel“-Funktion | 0x07 |
In den folgenden Abschnitten finden Sie weitere Informationen zu den einzelnen Nachrichtencodes.
Name des Nachrichtencodes | Wert | Nur Multipoint | Absender | Teilnehmer | Verschlüsseln | MAC | Bestätigen |
---|---|---|---|---|---|---|---|
Funktion „Audio-Wechsel“ nutzen | 0x10 | N | Beides | Beides, über Code 0x11 | N | N | N |
Funktion „Audio-Wechsel“ benachrichtigen | 0x11 | N | Beides | Beides | N | Ja | Ja |
Multipoint-Status festlegen | 0x12 | Ja | Suchender | Anbieter | N | Ja | Ja |
Einstellung für den Wechsel festlegen | 0x20 | Ja | Suchender | Anbieter | N | Ja | Ja |
Einstellung für den Wechsel verwenden | 0x21 | Ja | Suchender | Anbieter über Code 0x22 | N | N | N |
Benachrichtigung über Wechseleinstellung | 0x22 | Ja | Anbieter | Suchender | N | N | N |
Aktive Audioquelle wechseln(zu verbundenes Gerät) | 0x30 | Ja | Suchender | Anbieter | N | Ja | Ja |
Zurück (zum nicht verbundenen Gerät) wechseln | 0x31 | N | Suchender | Anbieter | N | Ja | Ja |
Ereignis mit Mehrpunktwechsel benachrichtigen | 0x32 | Ja | Anbieter | Suchender | N | N | N |
Verbindungsstatus abrufen | 0x33 | Ja | Suchender | Anbieter, über Code 0x34 | N | N | N |
Verbindungsstatus benachrichtigen | 0x34 | Ja | Anbieter | Suchender | Ja | N | N |
Verbindung über Audiowechsel benachrichtigen | 0x40 | N | Suchender | Anbieter | N | Ja | Ja |
Kontoschlüssel verwenden | 0x41 | N | Suchender | Anbieter | N | Ja | Ja |
Benutzerdefinierte Daten senden | 0x42 | N | Suchender | Anbieter | N | Ja | Ja |
Ziel für Verbindungsabbruch festlegen | 0x43 | Ja | Suchender | Anbieter | N | Ja | Ja |
Tabelle 4.3:Nachrichten zum Audiowechsel
MAC-Adresse von „Nachrichten zum Audio-Wechsel“
Für die Nachrichtenauthentifizierung ist für alle Audio-Switch-Nachrichten mit zusätzlichen Daten, die vom Seeker an den Anbieter gesendet werden, ein Nachrichtenauthentifizierungscode erforderlich. Wenn eine Nachricht mit dem MAC empfangen wird, sollte diese bestätigt werden, damit der Suchende 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 | Bestätigen | 0x01 |
2–3 | Uint16 | Länge der zusätzlichen Daten | variiert |
4 | Uint8 | Die „Audio-Wechsel“-Funktion | 0x07 |
5 | Uint8 | Nachrichtencode für Audiowechsel | variiert |
6 – Sek. | Zusätzliche Daten | variiert |
Wenn dies fehlschlägt, muss der Anbieter den NAK für die Nachricht senden:
Oktett | Datentyp | Beschreibung | Wert |
---|---|---|---|
0 | Uint8 | Bestätigung | 0xFF |
1 | Uint8 | NAK | 0x02 |
2–3 | Uint16 | Länge der zusätzlichen Daten | 0x0003 |
4 | Uint8 | Grund für den Fehler | variiert |
5 | Uint8 | Die „Audio-Wechsel“-Funktion | 0x07 |
6 | Uint8 | Nachrichtencode für Audiowechsel | variiert |
Wenn der Provider der Absender ist, ist keine MAC-Adresse erforderlich.
Funktion zum Audio-Wechsel nutzen
Sowohl der Anbieter für Audiowechsel als auch der Seeker können mit der folgenden Nachricht prüfen, ob der verbundene Suchende/Anbieter des verbundenen schnellen Pairings den Audiowechsel unterstützt oder nicht:
Oktett | Datentyp | Beschreibung | Wert |
---|---|---|---|
0 | Uint8 | Die „Audio-Wechsel“-Funktion | 0x07 |
1 | Uint8 | Funktion zum Audio-Wechsel nutzen | 0x10 |
2–3 | Uint16 | Länge der zusätzlichen Daten | 0 |
Tabelle 4.3.1.0:Funktion zum Audio-Wechsel abrufen
Funktion zum Audio-Wechsel benachrichtigen
Beim Empfang des get-Funktionen des Audio-Wechsel-Nachrichtencodes antwortet der Sucher/Anbieter des Audio-Wechsels mit einem der folgenden Flags:
Oktett | Datentyp | Beschreibung | Wert |
---|---|---|---|
0 | Uint8 | Die „Audio-Wechsel“-Funktion | 0x07 |
1 | Uint8 | Funktion zum Audio-Wechsel benachrichtigen | 0x11 |
2–3 | Uint16 | Länge der zusätzlichen Daten | 20, wenn dies vom Seefahrer gesendet wird 4, wenn dies vom Anbieter gesendet wurde |
4–5 | Uint16 | Versionscode für Audiowechsel | Ein Wert ungleich null bedeutet, dass der Audio-Wechsel unterstützt wird. Die aktuelle Version (mit der Sicherheitsverbesserung) ist 0x0102. Wenn „0 x 0000“ oder keine Antwort in 1 Sekunde angezeigt wird, wird „Audio-Wechsel“ auf diesem Gerät nicht unterstützt |
6–7 | flags | Funktions-Flags für Audiowechsel des Anbieters Wenn dies vom Seeker gesendet wird, sollten diese beiden Byte ignoriert werden. |
variiert Siehe Flags für die Funktion „Audio-Wechsel“ |
8–15 | Nachrichten-Nonce Nur erforderlich, wenn die Nachricht vom Suchenden gesendet wird |
variiert | |
16–23 | Authentifizierungscode für Nachricht Nur erforderlich, wenn die Nachricht vom Suchenden gesendet wird |
variiert |
Tabelle 4.3.1.1:Benachrichtigungsfunktion für den Audio-Wechsel
Flags für die Funktion „Audio-Wechsel“
Bit 0 (Oktett 6, MSB): Status des Audio-Wechsels
- 1, wenn der Audio-Wechsel-Status aktiviert ist
- 0, andernfalls
Bit 1: Multipoint-Konfigurierbarkeit
- 1, wenn das Gerät Multipoint-Konnektivität unterstützt und zwischen „Ein“ und „Aus“ gewechselt werden kann
- 0, andernfalls (Multipoint wird nicht unterstützt oder Multipoint ist immer aktiv)
Bit 2: Aktueller Status mehrerer Punkte
- 1, wenn Multipoint aktiviert ist
- 0, andernfalls
Bit 3: On-Head-Erkennung
- 1, wenn dieses Gerät die On-Head-Erkennung unterstützt (auch wenn diese jetzt deaktiviert ist)
- 0, andernfalls
Bit 4: aktueller Status der On-Head-Erkennung
- 1, wenn die On-Head-Erkennung aktiviert ist
- 0, andernfalls (unterstützt On-Head-Erkennung nicht oder On-Head-Erkennung ist deaktiviert)
Alle anderen Bits sind reserviert. Der Standardwert ist 0.
Multipoint-Status festlegen
Nutzer, die Audio-Wechsel suchen, bieten möglicherweise eine Einstellung zum Aktivieren/Deaktivieren der Multipoint-Funktion. Der Seeker legt den Mehrpunktstatus mit der folgenden Nachricht auf den Anbieter fest:
Oktett | Datentyp | Beschreibung | Wert |
---|---|---|---|
0 | Uint8 | Die „Audio-Wechsel“-Funktion | 0x07 |
1 | Uint8 | Multipoint-Status festlegen | 0x12 |
2–3 | Uint16 | Länge der zusätzlichen Daten | 17 |
4 | Uint8 | Multipoint-Status | 0: Multipunkt ausschalten 1: Multipunkt einschalten |
5–12 | Nachrichten-Nonce | variiert | |
13–20 | Authentifizierungscode für Nachrichten | variiert |
Tabelle 4.3.1.2:Mehrpunktstatus festlegen
Wechseleinstellung festlegen
Nutzer, die den Audio-Wechsel suchen, können die Schaltereinstellung für die Multipoint-Konnektivität ändern und sie mit der folgenden Nachricht auf den Anbieter festlegen:
Oktett | Datentyp | Beschreibung | Wert |
---|---|---|---|
0 | Uint8 | Die „Audio-Wechsel“-Funktion | 0x07 |
1 | Uint8 | Wechseleinstellung festlegen | 0x20 |
2–3 | Uint16 | Länge der zusätzlichen Daten | 18 |
4 | flags | Einstellung wird geändert | variiert Siehe Flag für die Einstellung für den Multipunkt-Wechsel. |
5 | Erweiterte Wechseleinstellungen Dieses Byte ist reserviert. Der Standardwert ist 0. |
variiert | |
6–13 | Nachrichten-Nonce | variiert | |
14–21 | Authentifizierungscode für Nachrichten | variiert |
Tabelle 4.3.2.0:Wechseleinstellung festlegen
Markierung für Einstellung für den Mehrpunktwechsel
- Bit 0 (MSB): A2DP vs. A2DP (Standard 0)
- Bit 1: HFP vs. HFP (Standard 0)
- Bit 2: A2DP vs. HFP (Standard 0)
- Bit 3: HFP vs. A2DP (Standard 1)
- Bit 4–7: reserviert
- Oben steht für „Anfrage für ein neues Profil“ im Vergleich zu „aktuelles aktives Profil“.
- 0, wenn der Nutzer nicht gewechselt hat
- 1 zum Wechseln
Wechseleinstellung abrufen
Nutzer, die Audio-Wechsel suchen, können die Wechseleinstellung von Multipoint vom Anbieter mit der folgenden Nachricht abfragen:
Oktett | Datentyp | Beschreibung | Wert |
---|---|---|---|
0 | Uint8 | Die „Audio-Wechsel“-Funktion | 0x07 |
1 | Uint8 | Wechselkonfiguration abrufen | 0x21 |
2–3 | Uint16 | Länge der zusätzlichen Daten | 0 |
Tabelle 4.3.2.1:Wechseleinstellung abrufen
Wechseleinstellung benachrichtigen
Oktett | Datentyp | Beschreibung | Wert |
---|---|---|---|
0 | Uint8 | Die „Audio-Wechsel“-Funktion | 0x07 |
1 | Uint8 | Wechseleinstellung benachrichtigen | 0x22 |
2–3 | Uint16 | Länge der zusätzlichen Daten | 2 |
4 | flags | Einstellungen für die Einstellung ändern | variiert Siehe Flag für die Einstellung für den Multipunkt-Wechsel. |
5 | Erweiterte Wechseleinstellungen Dieses Byte ist reserviert. Der Standardwert sollte 0 sein. |
variiert |
Tabelle 4.3.2.2:Wechseleinstellung benachrichtigen
Aktive Audioquelle wechseln (zu angeschlossenem Gerät)
Nutzer, die Audiowechsel suchen, können den Multipoint-Anbieter mit der folgenden Nachricht anfordern, 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 angeschlossenem Gerät) | 0x30 |
2–3 | Uint16 | Länge der zusätzlichen Daten | 17 |
4 | flags | Ereignis-Flags zu aktiven Audioquellen ändern | variiert Siehe Ereignis zum Wechseln der aktiven Audioquelle |
5–12 | Nachrichten-Nonce | variiert | |
13–20 | Authentifizierungscode für Nachrichten | variiert |
Tabelle 4.3.3.0:Aktive Audioquelle wechseln (zu angeschlossenem Gerät)
Ereignis: Aktive Audioquelle wechseln
- Bit 0 (MSB): 1 Wechsel zu diesem Gerät, 0 Wechsel auf zweites verbundenes Gerät
- Bit 1: 1 Setze die Wiedergabe nach dem Wechsel auf Gerät fort, andernfalls 0. Fortsetzen bedeutet, dass der Anbieter eine PLAY-Benachrichtigung über ein AVRCP-Profil an den Suchenden sendet. Wenn der vorherige Status (vor dem Beenden) nicht PLAY war, sollte der Anbieter dieses Flag ignorieren.
- Bit 2: 1 SCO auf einem abgeschalteten Gerät ablehnen, andernfalls 0
- Bit 3: 1 trenne die Bluetooth-Verbindung auf einem anderen Gerät, andernfalls 0.
- Bit 4–7: reserviert.
Nutzer, die Audio-Wechsel suchen, kennen ihren Status möglicherweise nicht immer richtig. Daher kann der Anbieter die Nachricht „Zu diesem Gerät wechseln“ erhalten, wenn der Suchende bereits das aktive Gerät ist. In diesem Fall kann der Anbieter einen NAK mit dem Fehlergrund „0x4 – Redundant device action“ senden, um die korrekte UI auf Seeker anzuzeigen.
Zurückwechseln (zu nicht verbundenem Gerät)
Wenn der Verbindungswechsel ungewollt ist, können Nutzer ihn rückgängig machen. In bestimmten Fällen ist es sinnvoll, die Audioverbindung wiederherzustellen, um Unterbrechungen zu minimieren. Der Suchende verwendet die folgende Nachricht, um den Zurückwechsel auszulösen:
Oktett | Datentyp | Beschreibung | Wert |
---|---|---|---|
0 | Uint8 | Die „Audio-Wechsel“-Funktion | 0x07 |
1 | Uint8 | Zurückwechseln (zu nicht verbundenem Gerät) | 0x31 |
2–3 | Uint16 | Länge der zusätzlichen Daten | 17 |
4 | Uint8 | Ereignis zurückwechseln | Variiert 0x01: Wechsel zurück 0x02: Zurück und Wiedergabe fortsetzen |
5–12 | Nachrichten-Nonce | variiert | |
13–20 | Authentifizierungscode für Nachrichten | variiert |
Tabelle 4.3.3.1:Zurück (zu nicht verbundenem Gerät)
Bei Multipoint-Anbietern kann ein Anbieter zum Wechseln der Verbindung die Verbindung mit einem Audioquellengerät trennen und die Audiositzung auf der anderen Audioquelle pausieren. Angenommen, das Mehrpunkt-Headset ist mit einem Tablet und einem dritten unterstützten Audio-Switch-Gerät verbunden. Der Nutzer sieht sich das Video auf dem Tablet an, während ein Anruf auf dem Smartphone eingeht. Das Smartphone löst einen Verbindungsschalter am Headset aus. Dieser muss die Verbindung des dritten Geräts trennen, um eine Verbindung mit dem Smartphone herzustellen. Gleichzeitig wird die Mediensitzung auf dem Tablet pausiert, um den Klingelton vom Smartphone zu erhalten. Wenn der Nutzer den Anruf ablehnt, fordert das Smartphone das Headset möglicherweise auf, „zurückzuwechseln und die Wiedergabe fortzusetzen“. Nach Erhalt dieser Anfrage muss das Headset erneut eine Verbindung zum dritten Gerät herstellen und die Wiedergabe des pausierten Videos auf dem Tablet fortsetzen.
Ereignis bei Mehrpunktwechsel benachrichtigen
Um Nutzer auf einen Multipunkt-Wechsel hinzuweisen, kann der Audio-Wechsel-Suchdienst Nutzern eine Benachrichtigung anzeigen. Der Anbieter sollte verbundene Audio-Wechsel-Zuschauer über das Wechselereignis benachrichtigen.
Oktett | Datentyp | Beschreibung | Wert |
---|---|---|---|
0 | Uint8 | Die „Audio-Wechsel“-Funktion | 0x07 |
1 | Uint8 | Ereignis vom Typ „Mehrpunktwechsel“ benachrichtigen Der Dienstleister sollte die Nachricht bei jedem Wechsel senden, einschließlich des Suchens von Audiowechsel zum Suchenden ohne Audiowechsel, vom Suchenden ohne Audiowechsel zum Suchenden ohne Audiowechsel und vom Suchenden zum Audio-Wechsel-Seeker zum Audio-Wechsel-Suchenden |
0x32 |
2–3 | Uint16 | Länge der zusätzlichen Daten | variiert |
4 | Uint8 | Grund für den Wechsel | variiert 0x00: nicht spezifiziert 0x01: A2DP-Streaming 0x02: HFP |
5 | Uint8 | Zielgerät | variiert 0x01: dieses Gerät 0x02: anderes verbundenes Gerät |
6–n | utf8 | Name des Zielgeräts , wenn das Zielgerät Audio-Wechsel ist, mit dem Namen, an den der Suchende gesendet hat, andernfalls unter Verwendung des BT-Namens (falls nicht zutreffend) unter Verwendung der letzten 2 Byte seiner Adresse |
variiert |
Tabelle 4.3.3.2:Mehrpunktwechsel-Ereignis benachrichtigen
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 | Länge der zusätzlichen Daten | 0 |
Tabelle 4.3.3.3:Verbindungsstatus abrufen
Nach Erhalt dieser Nachricht muss der Anbieter mit dem Nachrichtencode 0x34 antworten, den Verbindungsstatus benachrichtigen.
Verbindungsstatus benachrichtigen
Wie in der BLE-Werbenutzlast definiert: Wenn sich bei Multipoint-Anbietern der Verbindungsstatus ändert (mit Ausnahme des Änderns des Werbepakets), sollte der Anbieter auch die verbundenen Seeker, die denselben Kontoschlüssel verwenden, über die Änderung benachrichtigen. Wenn der Anbieter mit einem Suchenden, der keinen Audio-Wechsel sucht, verbunden ist und der Suchende ohne Audio-Wechsel aktiv ist, sollte der Anbieter auch den Sucher, der keinen Audio-Wechsel sucht, über den Verbindungsstatus informieren (mithilfe des Kontoschlüssels des Suchenden).
Oktett | Datentyp | Beschreibung | Wert |
---|---|---|---|
0 | Uint8 | Die „Audio-Wechsel“-Funktion | 0x07 |
1 | Uint8 | Verbindungsstatus benachrichtigen | 0x34 |
2–3 | Uint16 | Länge der zusätzlichen Daten | variiert |
4 | Uint8 | Kennzeichnung eines aktiven Geräts | Variiert 0x00: Dieser Sucher ist passiv und das aktive Gerät verwendet denselben Kontoschlüssel 0x01: Dieser Sucher ist das aktive Gerät 0x02: Dieser Sucher ist passiv und das aktive Gerät sucht nicht nach einem Audio-Switch. |
5–n | Status der verschlüsselten Verbindung | variiert | |
n+1–n+8 | Nachrichten-Nonce | variiert |
Tabelle 4.3.3.4: Verbindungsstatus benachrichtigen
Nachricht zum verschlüsselten Verbindungsstatus
encrypted_connection_status = connection_status_raw_data ^ AES(Key, IV)
wobei
Der Schlüssel wird vom verwendeten Kontoschlüssel abgeleitet, siehe Zufällige 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), die in der BLE-Werbenutzlast definiert ist. Beachten Sie, dass das Byte für Feldlänge und -typ nicht angegeben werden sollte, da hier der Nachrichtencode und die Datenlänge angegeben sind.
Verbindung durch Audio-Wechsel benachrichtigen
Anbieter für Audio-Wechsel müssen möglicherweise wissen, ob der Verbindungswechsel durch den Audio-Wechsel ausgelöst wird, um unterschiedliche Reaktionen zu haben. Beispielsweise müssen Earcons für Audio-Wechsel-Ereignisse deaktiviert sein. Der Suchende sendet eine Nachricht, um den Anbieter darüber zu informieren, dass diese Verbindung eine über einen Audio-Wechsel initiierte Verbindung war.
Oktett | Datentyp | Beschreibung | Wert |
---|---|---|---|
0 | Uint8 | Die „Audio-Wechsel“-Funktion | 0x07 |
1 | Uint8 | Verbindung durch Audio-Wechsel benachrichtigen | 0x40 |
2–3 | Uint16 | Länge der zusätzlichen Daten | 17 |
4 | Uint8 | Anzeige der Verbindung über Audiowechsel | Variiert 0: Diese Verbindung wurde nicht durch den Audio-Wechsel hergestellt 1: Es war eine Verbindung, die über den Audio-Wechsel initiiert wurde |
5–12 | Nachrichten-Nonce | variiert | |
13–20 | Authentifizierungscode für Nachrichten | variiert |
Tabelle 4.3.4.0:Verbindung über Benachrichtigung über Audiowechsel initiiert
Kontoschlüssel verwenden
Wenn mehrere Kontoschlüssel auf dem Suchenden (z.B. mehrere Nutzer) mit dem Anbieter verknüpft sind, verwendet der Suchende die folgende Nachricht, um anzugeben, welcher Kontoschlüssel verwendet wird.
Oktett | Datentyp | Beschreibung | Wert |
---|---|---|---|
0 | Uint8 | Die „Audio-Wechsel“-Funktion | 0x07 |
1 | Uint8 | Kontoschlüssel verwenden | 0x41 |
2–3 | Uint16 | Länge der zusätzlichen Daten | 22 |
4–9 | utf8 | String in Verwendung | UTF8 („in-use“) |
10–17 | Nachrichten-Nonce | variiert | |
18–25 | Authentifizierungscode für Nachrichten | variiert |
Tabelle 4.3.4.1:Kontoschlüssel verwenden
Nach dem Empfang dieser Nachricht kann der Anbieter feststellen, welcher Kontoschlüssel verwendet wird, indem er den Nachrichtenauthentifizierungscode überprüft.
Benutzerdefinierte Daten senden
Der aktive Audio-Switch-Seeker kann die Informationen (z.B. die Audionutzung) des Audiostreams in einem benutzerdefinierten Datenbyte kapseln und sie mithilfe der folgenden Nachricht an den Provider senden:
Oktett | Datentyp | Beschreibung | Wert |
---|---|---|---|
0 | Uint8 | Die „Audio-Wechsel“-Funktion | 0x07 |
1 | Uint8 | Benutzerdefinierte Daten senden | 0x42 |
2–3 | Uint16 | Länge der zusätzlichen Daten | 17 |
4 | Uint8 | Benutzerdefinierte Daten | variiert |
5–12 | Nachrichten-Nonce | variiert | |
13–20 | Authentifizierungscode für Nachrichten | variiert |
Tabelle 4.3.4.2:Benutzerdefinierte Daten senden
Nach dem Empfang der benutzerdefinierten Daten aktualisiert der Anbieter das Werbepaket, um die benutzerdefinierten Daten einzuschließen. Bei einem Mehrpunktanbieter sollte die Änderung des Verbindungsstatus auch einem anderen verbundenen Seefahrer mit demselben Kontoschlüssel mitgeteilt werden.
Ziel für Verbindungsabbruch festlegen
Wenn bei einem Mehrpunkt-Headset die zu trennende bevorzugte Verbindung nicht die zuletzt verwendete ist, können Nutzer, die Audio-Wechsel suchen, dem Anbieter mit der folgenden Nachricht mitteilen, welches Gerät entfernt werden soll:
Oktett | Datentyp | Beschreibung | Wert |
---|---|---|---|
0 | Uint8 | Die „Audio-Wechsel“-Funktion | 0x07 |
1 | Uint8 | Ziel für Verbindungsabbruch festlegen | 0x43 |
2–3 | Uint16 | Länge der zusätzlichen Daten | 17 |
4 | Uint8 | Ziel verbundenes Gerät, das verworfen werden soll | variiert 1: dieses Gerät |
5–12 | Nachrichten-Nonce | variiert | |
13–20 | Authentifizierungscode für Nachrichten | variiert |
Tabelle 4.3.4.3:Drop-Verbindungsziel festlegen
Referenzimplementierung
Informationen zur Referenzimplementierung finden Sie unter Nearby Embed SDK Library.