Audiowechsel
Da die Nutzer immer häufiger mehrere Audioquellen für ihre Arbeit verwenden, bei alltäglichen Aufgaben wird immer öfter nach einer einfacheren Lösung für die Verwaltung des Headsets gesucht. geräteübergreifend nutzen. Beim Audio-Wechsel werden die Headset-Verbindungen nahtlos umgestellt zwischen Geräten basierend auf Nutzeraktivitäten (z.B. dem Start eines Films) und priorisierten Ereignisse (z. B. eingehende Anrufe)
UX-Prinzipien
- Der Verbindungswechsel sollte schnell sein und sich an der Aktion des Nutzers orientieren.
- Der Verbindungswechsel sollte für Nutzer transparent sein, wenn der Wechsel unerwünscht ist.
- Beim Wechsel sollte der Datenschutz für Nutzer gewahrt bleiben.
Rollen
Audiowechsel-Seeker: Der Seeker ist ein Audioquellengerät, z. B. ein Smartphone oder Tablet) und suchen Sie nach einem Headset in der Nähe, mit dem Sie sich gegebenenfalls verbinden können.
Audiowechselanbieter: Der Anbieter ist normalerweise ein Headset, das für seine Anwesenheits- und Verbindungsstatus, sodass Nutzer Entscheidungen zum Wechsel treffen können.
Übersicht der 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 Seeker, wenn bereits eine Verbindung besteht. Für Single-Point-Anbieter:
|
Zur Leistungsverbesserung ist ein Seitenscanmodus mit niedriger Latenz (das Scanintervall sollte nicht größer als 640 ms sein) erforderlich. Um einen Kompromiss zwischen Akkulaufzeit und Wechselleistung zu finden, kann der Anbieter in den meisten Fällen einen Standardmodus für Seitenscans festlegen. Der Energiesparmodus darf nicht größer als 1.280 ms sein. Der Modus für geringe Latenzzeit muss jedoch in folgenden Situationen verwendet werden:
|
Obligatorisch |
Verbindungsverlauf | Wenn du zur vorherigen Verbindung zurückwechseln und die Wiedergabe gegebenenfalls fortsetzen möchtest. Das Zurückkehren wird durch Kommunikation über Message Stream APIs ausgelöst. Das Ereignis zum Pausieren des Audios sollte im Datensatz enthalten sein, damit die Wiedergabe fortgesetzt werden kann. |
Pflegen Sie den Verbindungsverlauf und implementieren Sie Message Stream APIs. | Obligatorisch |
Verbindungsstatus | Für Seeler, die die Verbindung zu einem anderen Anbieter beurteilen.Der Verbindungsstatus umfasst Folgendes:
|
Geben Sie den Verbindungsstatus in BLE-Advertising und Message Stream an. | Obligatorisch |
Änderung der Laufzeitfunktionen | Der Audio-Wechsel kann durch ein Upgrade der Firmware beim Provider aktiviert werden. Daher müssen die Funktionen zur Laufzeit zwischen Seeker und Provider synchronisiert werden. | Implementieren Sie Message Stream APIs, um auf Laufzeitfunktionen zuzugreifen. | Obligatorisch |
Konfigurierbare Wechselregeln | Der Seeker kann die Priorität zwischen bestehenden aktiven Audiostreams und neuen Audiostreaminganfragen über die Einstellungen der Nutzereinstellungen konfigurieren. Der Audiowechsel-Seeker kann beispielsweise UI-Einstellungen bereitstellen, über die Nutzer den automatischen Wechsel zwischen Medienstreaming und Anrufen aktivieren oder deaktivieren können. Der „Audio-Wechsel“-Seeker richtet die Wechselregel per Nachrichtenstream ein und ruft sie auf. |
Nur Multipoint-Anbieter. Implementiere Message Stream APIs, um den Wechsel zwischen verbundenen Geräten zu konfigurieren. |
Optional |
Wechsel zwischen aktiven Geräten | Der Seeker soll den Audiowechsel zwischen verbundenen Geräten simulieren. Auf der Seeker-Seite gibt es möglicherweise eine Benutzeroberfläche, über die Nutzer ganz einfach zwischen verbundenen Geräten wechseln können. |
Nur Multipoint-Anbieter. Implementiere Message Stream APIs für Audio Switch Seeker, um die aktive Audioquelle zwischen den verbundenen Geräten zu ermitteln. |
Obligatorisch |
Benachrichtigung zum Mehrpunktwechsel | Der Sucher kann die Benachrichtigung zum Wechsel anzeigen. | Nur Multipoint-Anbieter. Implementiere Message Stream APIs, um verbundene Audio-Switches zu benachrichtigen, wenn ein Multipoint-Wechsel stattfindet. |
Obligatorisch |
Werbenutzlast
Der Anbieter muss seinen aktuellen Verbindungsstatus in der Anzeige angeben, basierend auf den Kontodaten für die Funktion „Schnelles Pairing“, Werbung: Wenn nicht sichtbar:
Die Version von Tabelle 4.2 ist 0x1.
Feld „Verbindungsstatus“
Oktett | Datentyp | Beschreibung | Wert | Obligatorisch? |
---|---|---|---|---|
0 | uint8 |
Feldlänge und Typ 0bLLLLTTTT
|
0bLLLL0101
|
Obligatorisch |
1 | uint8 |
Verbindungsstatus 0bHAFRSSSS
|
0bHAFRSSSS
|
Obligatorisch |
2 | uint8 |
Benutzerdefinierte Daten Derzeit enthält es nur Inhaltstypen, die dazu dienen, die Nutzung des aktuellen Audiostreamings zu beschreiben. Der Seeker sendet sie an den Anbieter. |
Der Wert wird vom Seeker des aktuell aktiven Streamings per Nachrichtenstream an den Anbieter gesendet. 0, wenn das aktuell aktive Streaming nicht vom Seeker stammt. | Obligatorisch |
3 – var | Bitmap der verbundenen Geräte Eine Bitmap, die zeigt, welche Geräte derzeit mit dem Anbieter verbunden sind. Alle verbundenen Geräte werden der Reihe nach angeordnet, wobei ein Bit für ein verbundenes Gerät verwendet wird. Die Länge hängt von der Anzahl der verbundenen Geräte des Anbieters ab. |
Das zugeordnete Bit wird auf 1 gesetzt, wenn das Gerät derzeit mit dem Anbieter verbunden ist, andernfalls auf 0. Weitere Informationen findest du unter Bitmap für verbundene Geräte. |
Optional |
Tabelle 4.1:Rohdaten im Feld „Verbindungsstatus“
Verbindungs-Flags
0bH = On-Head-Erkennung
- 1, jetzt auf dem Kopf
- 0, andernfalls nicht auf dem Kopf oder es gibt keinen 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 Medien jetzt nicht zulässig d.h. kein Wechsel von A2DP zu A2DP
- 0, andernfalls
0bR = automatisch neu verbunden
- 1, wenn die aktuelle Verbindung vom Provider automatisch wiederhergestellt wird, d. h. nicht durch Nutzer verbunden (bei Multipoint-Konnektivität, wenn eine der automatisch wiederhergestellt wird, sollte diese Einstellung auf 1) gesetzt werden.
- 0, andernfalls
Verbindungsstatus
- 0 x 0: keine Verbindung
- 0 x 1: Paging
- 0 x 2: verbunden, aber keine Datenübertragung
- 0x3: Nicht-Audio-Datenübertragung (nur wenn umschaltbar; falls nicht, mit 0xF)
- 0x4: A2DP-Streaming, AVRCP nicht zutreffend
- 0 x 5: A2DP-Streaming und AVRCP-Wiedergabe
- 0x6: HFP-Streaming (Telefon-/VoIP-Anruf), einschließlich Inband- und Nicht-Inband-Klingelton
- 0x7: LE Audio – Medienstreaming ohne Steuerung
- 0x8: LE Audio – Medienstreaming mit Steuerung
- 0:9: LE Audio – Anrufstreaming
- 0xA: LE Audio – Übertragung
- 0xF: Verbindungswechsel vorübergehend deaktivieren (z.B. Firmware-Update)
LE Audio-Kontexttyp und Verbindungsstatus
Empfiehl dem LE Audio Provider, alle angegebenen Kontexttypen zu verarbeiten. in Assigned Numbers 6.12.3 (es sei denn, der Anbieter unterstützt einen bestimmten Kontexttyp ausdrücklich nicht) und die Karte den Kontexttyp auf den Verbindungsstatus wie unten dargestellt.
- Dialogorientiert: 0 x 9
- Medien: 0 x 8
- Spiel: 0 x 7
- Anleitung: 0 x 7
- Sprachassistenten: 0x9
- Live: 0x9
- Soundeffekte: 0x2
- Benachrichtigungen: 0 x 2
- Klingelton: 0x9
- Benachrichtigungen: 0 x 7
- Notfallalarm: 0x9
Für den Kontexttyp „Gemischtes LE Audio“, z. B. das Abspielen von Medien während verwendet der Anbieter den Verbindungsstatus mit der höchsten Priorität, d.h. 0 x 9 (Aufruf) für das obige Szenario anstelle von 0 x 8 (Medien).
Bitmap der verbundenen Geräte
Um einen unerwünschten Verbindungswechsel zu vermeiden, muss der Seeker möglicherweise wissen, Gerät(en), mit dem/denen das Headset momentan verbunden ist. Wenn das Headset zum Beispiel mit dem Telefon verbunden ist, möchte der Nutzer nicht durch die die Verbindung wechselt, wenn eines der Familienmitglieder YouTube Tablet.
Beachten Sie, dass diese Bitmap anonym ist. Der Seeker kann nicht wissen, Geräte mit dem Anbieter verbunden sind. Beispiel: 5 gebundene Geräte:
- 0: Laptop (0bx0000000)
- 1: phoneA (0b0x000000)
- 2: phoneB (0b00x00000)
- 3: Tablet (0b000x0000)
- 4: Fernsehen (0b0000x000)
Wenn es sich bei den derzeit verbundenen Geräten um einen Laptop und ein Tablet handelt, Bitmap ist 0b10010000. Die Bestelländerung ist akzeptabel, wenn dies 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ällig auflösbare Anzeige
Um Tracking zu vermeiden und die Privatsphäre der Nutzer zu respektieren, sollte der Dienstleister rotieren und Verschlüsseln Sie das Feld mithilfe des Kontoschlüssels mit AES-CTR:
encrypted_connection_status_field = connection_status_raw_data ^ AES(Key, IV)
Bitte wo?
Der Schlüssel wird vom Kontoschlüssel in Verwendung abgeleitet, der wird im nächsten Abschnitt definiert.
Der Schlüssel wird von der HKDF-Funktion, IETF RFC 5869, unter Verwendung des SHA-256-Algorithmus generiert Hash-Funktion verwendet werden.
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 das 2-Byte-Salz der Kontoschlüsseldaten mit Null. Padding, d.h. IV steht für concat(Salt, 14-Byte-NULL-Werte).
Die Rohdaten für den Verbindungsstatus sind in Tabelle 4.1 definiert, wenn der ändert sich der Verbindungsstatus, sollten Salt und RPA neu generiert werden. innerhalb desselben Werbezeitraums.
Dadurch wird das Feld für den Status der verschlüsselten Verbindung gleichzeitig mit der Kontoschlüsseldaten werden rotiert.
Die BLE-Anzeige ist so aufgebaut:
Oktett | Datentyp | Beschreibung | Wert | 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 | Obligatorisch, wenn die Liste der Kontoschlüssel nicht leer ist, andernfalls ausgeschlossen. |
Tabelle 4.2:BLE-Advertising 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
|
Obligatorisch |
1 – var | Verschlüsselte Daten | variiert | Obligatorisch |
Tabelle 4.2.1:Zufällig auflösbare Daten
Wenn beispielsweise die zufällig auflösbaren Daten eine verschlüsselte Verbindung enthalten, Statusfeld enthält, ist das entschlüsselte Ergebnis die Feld für den Verbindungsstatus.
Um Manipulationen zu verhindern, sollten die Kontoschlüsseldaten oben leicht geändert werden wenn die Random Resolvable Data in der Anzeige enthalten ist. In der Regel geschieht Folgendes: der Kontoschlüsselfilter erstellt, wird ein Wert V erzeugt, indem das Konto mit einem Salt versehen. Wenn zufällige auflösbare Daten ebenfalls sollte der Wert V wie folgt konstruiert sein:
V = concat(account_key, salt, random_resolvable_data)
Wenn sowohl Akkudaten als auch zufällig auflösbare Daten beworben werden, sollte V so aufgebaut sein:
V = concat(account_key, salt, battery_data, random_resolvable_data)
Verwendeter Kontoschlüssel
Der Verbindungswechsel erfolgt kontobasiert, daher sollte der Anbieter die Kontoinformationen der aktuellen Verbindung im BLE-Advertising. Wenn die das aktuell verbundene Gerät einen Audio-Switcher ist, sollte der Anbieter um den mit diesem Seeker verknüpften Kontoschlüssel abzurufen und diesen Kontoschlüssel zu verwenden, und verschlüsseln Sie das Feld mit dem Verbindungsstatus. Wenn es sich bei der verbundenen Audioquelle nicht um Audio handelt Switch Seeker muss der Anbieter den zuletzt verwendeten Kontoschlüssel verwenden.
Vor der Berechnung des Filters für den Kontoschlüssel sollte der Anbieter die erste Byte der Kontoschlüssel so, dass eines der folgenden Verwendungsmuster enthalten 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 gibt keine Kontoschlüsselinformationen des aktuellen Verbindungsstatus anzeigt, verbundene Geräte oder das verbundene Gerät kein Audio-Wechsel-Seeker ist. - 0b00000110
Dieser Kontoschlüssel ist der verwendete Kontoschlüssel.
Das Feld für den Verbindungsstatus wird mit diesem Kontoschlüssel verschlüsselt und der aktuelle verbundenes Gerät ist mit diesem Kontoschlüssel verknüpft.
Schema für Audio-Wechsel-Nutzlast
Die folgende Abbildung zeigt das Schema für die Nutzlast des Audio-Wechsels.
![](https://developers-dot-devsite-v2-prod.appspot.com/nearby/fast-pair/images/SASS-ble-payload-schematic.png?authuser=0000&hl=de)
Nachrichten
Wenn eine Verbindung besteht, können der Sucher und Anbieter den Nachrichtenstream verwenden, um Audio zu synchronisieren. Wechselfunktion, einen Verbindungswechsel auslösen, den Wechsel einstellen Benachrichtigungen über den Verbindungsstatus usw. Wir erstellen eine Nachrichtengruppe spezielle Nachrichtencodes für den Audio-Wechsel, wie unten beschrieben.
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 |
---|---|---|---|---|---|---|---|
Audio-Wechsel möglich | 0x10 | N | Beides | Beide, über den Code 0x11 | N | Nein | N |
Funktion zum Audio-Wechsel benachrichtigen | 0x11 | N | Beides | Beides | N | Ja | Ja |
Multipoint-Zustand festlegen | 0x12 | Ja | Suchender | Anbieter | N | Ja | Ja |
Einstellungen für den Wechsel festlegen | 0x20 | Ja | Suchender | Anbieter | N | Ja | Ja |
Einstellungen für den Wechsel abrufen | 0x21 | Ja | Suchender | Anbieter, über den Code 0x22 | N | Nein | N |
Benachrichtigung über Wechseleinstellung | 0x22 | Ja | Anbieter | Suchender | N | Nein | N |
Aktive Audioquelle zum verbundenen Gerät wechseln | 0x30 | Ja | Suchender | Anbieter | N | Ja | Ja |
Zurückwechseln | 0x31 | N | Suchender | Anbieter | N | Ja | Ja |
Ereigniswechsel bei mehreren Punkten benachrichtigen | 0x32 | Ja | Anbieter | Suchender | N | Nein | N |
Verbindungsstatus abrufen | 0x33 | Ja | Suchender | Anbieter, über den Code 0x34 | N | Nein | N |
Verbindungsstatus benachrichtigen | 0x34 | Ja | Anbieter | Suchender | Ja | Nein | N |
Bei Audiowechsel-Verbindung benachrichtigen | 0x40 | N | Suchender | Anbieter | N | Ja | Ja |
Nutzungskontoschlüssel angeben | 0x41 | N | Suchender | Anbieter | N | Ja | Ja |
Benutzerdefinierte Daten senden | 0x42 | N | Suchender | Anbieter | N | Ja | Ja |
Verbindungsziel zum Trennen festlegen | 0x43 | Ja | Suchender | Anbieter | N | Ja | Ja |
Tabelle 4.3:Nachrichten zum Audiowechsel
MAC-Adresse von Audio-Wechsel-Nachrichten
Um die Nachrichtenauthentifizierung zu ermöglichen, enthalten alle Audio-Wechsel-Nachrichten zusätzliche Für Daten, die vom Seeker an den Anbieter gesendet werden, ist ein Nachrichtenauthentifizierungscode erforderlich. Wann? eine Nachricht mit MAC eingeht, sollte diese bestätigt werden, damit der Seeker weiß, ob der Provider auf die Nachricht reagiert hat oder nicht.
Wenn die Nachrichtenauthentifizierung erfolgreich ist, sendet der Anbieter eine Bestätigung für die Nachricht:
Oktett | Datentyp | Beschreibung | Wert |
---|---|---|---|
0 | uint8 | Bestätigung | 0xFF |
1 | uint8 | BESTÄTIGEN | 0x01 |
2–3 | uint16 | Zusätzliche Datenlänge | variiert |
4 | uint8 | Die „Audio-Wechsel“-Funktion | 0x07 |
5 | uint8 | Code der Nachricht zum Audiowechsel | variiert |
6–Sek. | Zusätzliche Daten | variiert |
Wenn sie fehlschlägt, hat der Dienstleister die NAK für die Nachricht zu senden:
Oktett | Datentyp | Beschreibung | Wert |
---|---|---|---|
0 | uint8 | Bestätigung | 0xFF |
1 | uint8 | Nackt | 0x02 |
2–3 | uint16 | Zusätzliche Datenlänge | 0x0003 |
4 | uint8 | Fehlerursache | variiert |
5 | uint8 | Die „Audio-Wechsel“-Funktion | 0x07 |
6 | uint8 | Code der Nachricht zum Audiowechsel | variiert |
Wenn der Anbieter der Absender ist, ist keine MAC-Adresse erforderlich.
Funktion „Audio-Wechsel“ nutzen
Sowohl der Audio-Wechselanbieter als auch der Seeker können prüfen, ob das verbundene schnelle Pairing Der Sucher/Anbieter unterstützt den Audio-Wechsel oder nicht. Verwenden Sie dazu die folgende Nachricht:
Oktett | Datentyp | Beschreibung | Wert |
---|---|---|---|
0 | uint8 | Die „Audio-Wechsel“-Funktion | 0x07 |
1 | uint8 | Funktion „Audio-Wechsel“ nutzen | 0x10 |
2–3 | uint16 | Zusätzliche Datenlänge | 0 |
Tabelle 4.3.1.0:Funktion zum Audio-Wechsel abrufen
Funktion zum Audio-Wechsel benachrichtigen
Bei Erhalt der Nachricht Funktion „Audio-Wechsel“ Code eingeben, antwortet der Seeker/Anbieter für den Audiowechsel mit einer der folgenden Anfragen: Flags:
Oktett | Datentyp | Beschreibung | Wert |
---|---|---|---|
0 | uint8 | Die „Audio-Wechsel“-Funktion | 0x07 |
1 | uint8 | Funktion zum Audio-Wechsel benachrichtigen | 0x11 |
2–3 | uint16 | Zusätzliche Datenlänge | 20, wenn dies vom Seeker gesendet wird, 4, wenn dies vom Anbieter gesendet wird |
4–5 | uint16 | Versionscode für Audiowechsel | Ein Wert ungleich null bedeutet, dass der Audio-Wechsel unterstützt wird. Die aktuelle Version (mit dem Code für die Sicherheitserweiterung) ist 0x0102. 0x0000 oder keine Antwort innerhalb von 1 Sekunde bedeutet, dass der Audio-Wechsel auf diesem Gerät nicht unterstützt wird |
6–7 | flags | Audio-Switch-Funktions-Flags des Anbieters Wenn dies vom Seeker gesendet wird, sollten diese beiden Byte ignoriert werden. |
variiert Siehe Flags zur Audio-Wechselfunktion |
8–15 | Nachrichten-Nonce Nur erforderlich, wenn sie vom Seeker gesendet wird |
variiert | |
16–23 | Authentifizierungscode der Nachricht Nur erforderlich, wenn die Nachricht vom Seeker gesendet wird |
variiert |
Tabelle 4.3.1.1:Benachrichtigung über die Fähigkeit des Audio-Wechsels
Funktions-Flags zum Audio-Wechsel
Bit 0 (Oktett 6, MSB): Audio-Wechselstatus
- 1, wenn der Audio-Wechselstatus aktiviert ist
- 0, andernfalls
Bit 1: Mehrpunktkonfigurierbarkeit
- 1, wenn das Gerät Multipoint unterstützt und zwischen Ein- und Aus
- 0, andernfalls (Multipoint wird nicht unterstützt oder Multipoint ist immer aktiviert)
Bit 2: Multipoint-Aktueller Status
- 1, wenn die Multipoint-Konnektivität aktiviert ist
- 0, andernfalls
Bit 3: On-Head-Erkennung
- 1, wenn dieses Gerät die On-Head-Erkennung unterstützt (auch bei jetzt deaktiviert)
- 0, andernfalls
Bit 4: Aktueller Status der On-Head-Erkennung
- 1, wenn die On-Head-Erkennung aktiviert ist
- 0, andernfalls (unterstützt keine On-Head-Erkennung oder ist deaktiviert)
Alle anderen Bits sind reserviert, der Standardwert ist 0.
Multipoint-Status festlegen
Wenn Nutzer die Option „Audio-Wechsel“ verwenden, bieten wir Nutzern unter Umständen die Möglichkeit, dies zu aktivieren oder zu deaktivieren. Multipoint-Funktionen nutzen. Der Seeker legt den Multipoint-Status auf den Wert Anbieter, der die folgende Nachricht verwendet:
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 ausschalten 1: Multipoint einschalten |
5–12 | Nachrichten-Nonce | variiert | |
13–20 | Authentifizierungscode der Nachricht | variiert |
Tabelle 4.3.1.2:Multipoint-Status festlegen
Wechseleinstellung festlegen
Nutzer, die die Funktion „Audio-Wechsel“ nutzen möchten, können die Einstellung „Multipoint“ ändern und festlegen mit der folgenden Nachricht an den Anbieter senden:
Oktett | Datentyp | Beschreibung | Wert |
---|---|---|---|
0 | uint8 | Die „Audio-Wechsel“-Funktion | 0x07 |
1 | uint8 | Wechseleinstellung festlegen | 0x20 |
2–3 | uint16 | Zusätzliche Datenlänge | 18 |
4 | flags | Wechseleinstellung | variiert Siehe Einstellungs-Flag für Mehrpunktwechsel |
5 | Erweiterte Schalteinstellungen Dieses Byte ist reserviert, der Standardwert ist 0 |
variiert | |
6–13 | Nachrichten-Nonce | variiert | |
14–21 | Authentifizierungscode der Nachricht | variiert |
Tabelle 4.3.2.0:Einstellungen für den Wechsel festlegen
Einstellungs-Flag für Mehrpunktwechsel
- Bit 0 (MSB): A2DP vs. A2DP (Standard 0)
- Bit 1: HFP vs. HFP (Standardeinstellung 0)
- Bit 2: A2DP vs. HFP (Standardeinstellung 0)
- Bit 3: HFP und A2DP (Standard 1)
- Bit 4 – 7: reserviert
- Oben steht „neue Profilanforderung“. im Vergleich zum aktuellen aktiven Profil
<ph type="x-smartling-placeholder">
- </ph>
- 0, wenn nicht gewechselt wird
- 1 für den Wechsel
Einstellungen für Wechsel abrufen
Nutzer, die einen Audiowechsel bevorzugen, können die Wechseleinstellung des Mehrpunktmodus über die Anbieter, der die folgende Nachricht verwendet:
Oktett | Datentyp | Beschreibung | Wert |
---|---|---|---|
0 | uint8 | Die „Audio-Wechsel“-Funktion | 0x07 |
1 | uint8 | Wechselkonfiguration abrufen | 0x21 |
2–3 | uint16 | Zusätzliche Datenlänge | 0 |
Tabelle 4.3.2.1:Einstellungen für den Wechsel abrufen
Benachrichtigung über Wechseleinstellung
Oktett | Datentyp | Beschreibung | Wert |
---|---|---|---|
0 | uint8 | Die „Audio-Wechsel“-Funktion | 0x07 |
1 | uint8 | Benachrichtigung über Wechseleinstellung | 0x22 |
2–3 | uint16 | Zusätzliche Datenlänge | 2 |
4 | flags | Flags wechseln | variiert Siehe Einstellungs-Flag für Mehrpunktwechsel |
5 | Erweiterte Schalteinstellungen Dieses Byte ist reserviert, der Standardwert sollte 0 sein |
variiert |
Tabelle 4.3.2.2:Benachrichtigung über Wechseleinstellung
Aktive Audioquelle wechseln (auf verbundenes Gerät)
Nutzer, die einen Audiowechsel bevorzugen, können beim Multipoint-Anbieter eine Umstellung der aktiven Audioquelle zwischen verbundenen Geräten, indem du die folgende Nachricht verwendest:
Oktett | Datentyp | Beschreibung | Wert |
---|---|---|---|
0 | uint8 | Die „Audio-Wechsel“-Funktion | 0x07 |
1 | uint8 | Aktive Audioquelle wechseln (auf verbundenes Gerät) | 0x30 |
2–3 | uint16 | Zusätzliche Datenlänge | 17 |
4 | flags | Ereignis-Flags für aktive Audioquelle wechseln | variiert Siehe Ereignis zum Umschalten der aktiven Audioquelle |
5–12 | Nachrichten-Nonce | variiert | |
13–20 | Authentifizierungscode der Nachricht | variiert |
Tabelle 4.3.3.0:Aktive Audioquelle wechseln (an verbundenes Gerät)
Ereignis zum Wechseln der aktiven Audioquelle
- Bit 0 (MSB): 1 Schalter zu diesem Gerät, 0 Schalter zu zweitem angeschlossenem Gerät
- Bit 1: 1 setzt die Wiedergabe auf dem Wechsel zum Gerät nach dem Wechsel fort, sonst 0. Wenn das Spiel fortgesetzt wird, sendet der Anbieter eine PLAY-Benachrichtigung an den Seeker. über das AVRCP-Profil. Wenn der vorherige Status (vor dem Abschalten) nicht PLAY ist, sollte der Provider dieses Flag ignorieren.
- Bit 2: 1 SCO bei ausgeschaltetem Gerät abgelehnt, andernfalls 0
- Bit 3: 1 trennt die Bluetooth-Verbindung auf dem Gerät, andernfalls 0.
- Bit 4 – 7: reserviert.
Nutzer, die die Funktion „Audio-Wechsel“ nutzen möchten, wissen ihren Status möglicherweise nicht immer richtig. damit der Anbieter einen „Wechsel zu diesem Gerät“ erhält wenn der Seeker bereits das aktive Gerät ist. Damit auf dem Seeker die richtige Benutzeroberfläche angezeigt wird, Der Anbieter kann ein NAK mit dem Fehlergrund „0x4 – Redundante Geräteaktion“ senden.
Für einen LE Audio-Anbieter mit mehr als einem festgelegten Mitglied sollte der Provider folgende Schritte ausführen: trennst du alle Mitglieder vom Seeker. Andernfalls wird der Bluetooth-Stack des Der Sucher würde sich wieder mit dem Anbieter verbinden.
Zurück wechseln (Gerät getrennt),
Wenn der Verbindungswechsel ungewollt ist, können Nutzer ihn rückgängig machen. ist es sinnvoll, die Audioverbindung wiederherzustellen, um Störungen. Der Seeker verwendet die folgende Nachricht, um einen Wechsel auszulösen:
Oktett | Datentyp | Beschreibung | Wert |
---|---|---|---|
0 | uint8 | Die „Audio-Wechsel“-Funktion | 0x07 |
1 | uint8 | Zurück wechseln (Gerät getrennt), | 0x31 |
2–3 | uint16 | Zusätzliche Datenlänge | 17 |
4 | uint8 | Termin zurückwechseln | variiert 0x01: Zurückwechseln 0x02: Zurückwechseln und Wiedergabe fortsetzen |
5–12 | Nachrichten-Nonce | variiert | |
13–20 | Authentifizierungscode der Nachricht | variiert |
Tabelle 4.3.3.1:Zurückwechseln (bei getrenntem Gerät)
Bei Multipoint-Anbietern kann ein Provider für einen Verbindungswechsel die Verbindung mit einem Audioquelle herstellen und die Audiositzung auf dem anderen Gerät anhalten Audioquelle. Beispiel: Das Multipoint-Headset ist mit einem Tablet und ein drittes unterstütztes Audio-Wechselgerät. Der Nutzer sieht sich ein Video an auf auf dem Tablet, wenn ein Anruf auf dem Smartphone eingeht. Das Smartphone löst aus einen Verbindungsschalter am Headset, wodurch die Verbindung um eine Verbindung zum Smartphone herzustellen. Gleichzeitig wird die Medienwiedergabe Sitzung auf dem Tablet, um den Klingelton vom Telefon abzurufen. Wenn der Nutzer ablehnt Sie während des Anrufs an das Headset zurückwechseln und die Wiedergabe fortsetzen. Nach Erhalt dieser Anfrage muss sich das Headset wieder mit dem dritten Gerät verbinden. setze die Wiedergabe des pausierten Videos auf dem Tablet fort.
Ereignis zum Wechsel mehrerer Punkte benachrichtigen
Um Nutzer auf einen Multipoint-Wechsel aufmerksam zu machen, Der Sucher zeigt Nutzern möglicherweise eine Benachrichtigung an. Der Provider sollte die Audio-Wechsel-Interessierte bezüglich des Wechsels.
Oktett | Datentyp | Beschreibung | Wert |
---|---|---|---|
0 | uint8 | Die „Audio-Wechsel“-Funktion | 0x07 |
1 | uint8 | Ereignis zum Mehrpunktwechsel benachrichtigen Der Anbieter sollte es bei jedem Wechsel senden, einschließlich „Sehbehinderer“ zu „Audio-Wechsel-Seeker“ auf Nicht-Audio-Wechsel-Seeker, Nicht-Audio-Wechsel-Seeker zu Audio-Wechsel-Seeker und Audio-Wechsel-Seeker to Audio-Interessierte |
0x32 |
2–3 | uint16 | Zusätzliche Datenlänge | variiert |
4 | uint8 | Grund für den Wechsel Dieser Wert sollte auf Grundlage 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 eines von Sprachassistenten initiierten Wechsels sollte also 0x02 lauten. |
variiert 0x00: Nicht spezifiziert 0x01: Medien (z.B. A2DP-Streaming, LEA-Media-Streaming) 0x02: Anruf (z.B. HFP-Streaming, LEA-Anrufstreaming) |
5 | uint8 | Zielgerät | variiert 0 x 01: dieses Gerät 0 x 02: anderes verbundenes Gerät |
6–n | utf8 | Name des Zielgeräts , wenn das Zielgerät „Audio Switch Seeker“ ist. Dazu wird der Name verwendet, an den der Seeker gesendet hat. Andernfalls wird der Name des Bluetooth-Geräts verwendet, falls nicht zutreffend, mit den letzten 2 Byte seiner Adresse. |
variiert |
Tabelle 4.3.3.2:Benachrichtigung über Multipoint-Wechsel-Ereignis
Verbindungsstatus abrufen
Der Seeker 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 hat der Anbieter den Nachrichtencode 0x34, benachrichtigt den Verbindungsstatus.
Verbindungsstatus benachrichtigen
Wie in der BLE-Werbenutzlast definiert, Multipoint-Anbieter, wenn sich der Verbindungsstatus ändert, mit Ausnahme von sollte der Provider auch die verbundenen Seekers benachrichtigen, den gleichen Kontoschlüssel für die Änderung verwenden. Wenn der Anbieter verbunden ist mit einem Sucher mit Audio-Wechsel und einem Sucher ohne Audio-Wechsel, wenn der Switch Seeker aktiv ist, sollte der Provider auch das verbundene Audiosystem Wechseln Sie mit dem Kontoschlüssel des Seekers zum Verbindungsstatus.
Oktett | Datentyp | Beschreibung | Wert |
---|---|---|---|
0 | uint8 | Die „Audio-Wechsel“-Funktion | 0x07 |
1 | uint8 | Verbindungsstatus benachrichtigen | 0x34 |
2–3 | uint16 | Zusätzliche Datenlänge | variiert |
4 | uint8 | Aktives Geräte-Flag | variiert 0x00: Dieser Seeker ist passiv und das aktive Gerät verwendet denselben Kontoschlüssel 0x01: Dieser Seeker ist das aktive Gerät 0x02: Dieser Seeker ist passiv und das aktive Gerät ist kein Audio-Switch-Seeker. |
5–n | Status der verschlüsselten Verbindung | variiert | |
n+1–n+8 | Nachrichten-Nonce | variiert |
Tabelle 4.3.3.4:Benachrichtigung des Verbindungsstatus
Statusnachricht für verschlüsselte Verbindung
encrypted_connection_status = connection_status_raw_data ^ AES(Key, IV)
Dabei gilt:
Der Schlüssel wird vom verwendeten Kontoschlüssel abgeleitet, siehe Zufällig auflösbare Anzeige.
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, verbundene_Geräte), die in BLE definiert sind, Werbenutzlast Beachten Sie, dass das Byte für Feldlänge und -typ nicht enthalten sein sollte, da Hier sehen Sie den Nachrichtencode und die Datenlänge.
Bei Audiowechsel-Verbindung benachrichtigen
Anbieter von Audio-Wechsel müssen möglicherweise wissen, ob der Verbindungswechsel ausgelöst wird über die Funktion „Audio-Wechsel“, um verschiedene Reaktionen zu erhalten, z.B. Earcons für Audio deaktivieren wechseln. Der Seeker sendet eine Nachricht, um den Anbieter darüber zu informieren, Verbindung war eine Verbindung, die vom Audio-Wechsel initiiert wurde.
Oktett | Datentyp | Beschreibung | Wert |
---|---|---|---|
0 | uint8 | Die „Audio-Wechsel“-Funktion | 0x07 |
1 | uint8 | Bei Audiowechsel-Verbindung benachrichtigen | 0x40 |
2–3 | uint16 | Zusätzliche Datenlänge | 17 |
4 | uint8 | Angabe, dass die Verbindung bei Audiowechsel initiiert wurde | variiert 0: Diese Verbindung wurde nicht durch den Audio-Wechsel ausgelöst 1: Dies war eine vom Audio-Wechsel initiierte Verbindung |
5–12 | Nachrichten-Nonce | variiert | |
13–20 | Authentifizierungscode der Nachricht | variiert |
Tabelle 4.3.4.0:Bei Audiowechsel-Verbindung benachrichtigen
Verwendeten Kontoschlüssel angeben
Wenn mehrere Kontoschlüssel auf dem Seeker (z.B. mehrere Nutzer) verknüpft sind mit Anbieter hat, gibt der Seeker mit der folgenden Nachricht an, welches Konto Schlüssel wird verwendet.
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 | Authentifizierungscode der Nachricht | variiert |
Tabelle 4.3.4.1:Verwendeten Kontoschlüssel angeben
Nach Erhalt dieser Nachricht kann der Dienstleister sehen, welcher Kontoschlüssel gerade verwendet wird indem Sie den Authentifizierungscode der Nachricht überprüfen.
Benutzerdefinierte Daten senden
Der aktive Audio-Switch Seeker kann die Informationen (z.B. Audio) Nutzung) des Audiostreams in einem benutzerdefinierten Datenbyte und senden Sie ihn mithilfe von die folgende Nachricht:
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 | Authentifizierungscode der Nachricht | 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 außerdem der Änderung des Verbindungsstatus zu einem anderen verbundenen Seeker, der denselben Kontoschlüssel verwendet.
Verbindungsziel löschen
Wenn die bevorzugte Verbindung bei Multipoint-Headsets nicht die am längsten nicht verwendet wurde, können Audio-Wechsel-Nutzer dem Provider mitteilen, mit der folgenden Meldung entfernen:
Oktett | Datentyp | Beschreibung | Wert |
---|---|---|---|
0 | uint8 | Die „Audio-Wechsel“-Funktion | 0x07 |
1 | uint8 | Verbindungsziel löschen | 0x43 |
2–3 | uint16 | Zusätzliche Datenlänge | 17 |
4 | uint8 | Ziel des verbundenen Geräts, das gelöscht werden soll | variiert 1: dieses Gerät |
5–12 | Nachrichten-Nonce | variiert | |
13–20 | Authentifizierungscode der Nachricht | variiert |
Tabelle 4.3.4.3:Legen Sie das Ziel für das Verbindungsabbruch fest
Referenzimplementierung
Die Referenzimplementierung finden Sie in der Nearby Embedded SDK Library.