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

  1. Die Verbindungsweiterleitung sollte schnell und auf Nutzeraktionen basieren.
  2. 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.
  3. 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:
  • Das ursprüngliche Quellgerät pausiert die Audiowiedergabe automatisch, wenn die Verbindung zum Anbieter getrennt wird.
Für Multipoint-Anbieter:
  • Wenn noch eine Verbindung verfügbar ist, wird die Verbindungsanfrage akzeptiert.
  • Wenn die Verbindungsbandbreite voll ist, wird die am wenigsten genutzte Verbindung getrennt (z.B. wenn seit langem kein Audioereignis stattgefunden hat) und die neue eingehende Anfrage akzeptiert.
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:
  • In den ersten 30 Sekunden nach dem Einschalten
  • Erste 30 Sekunden ohne Verbindung oder Weiterleitung
  • Erste 30 Sekunden Inaktivität des Geräts
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:
  • Verbindungsstatus
  • Audiotyp der aktiven Verbindung
  • Kontoinformationen der aktiven Verbindung
  • Verbundene Geräte
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
  • L = Länge des Verbindungsstatus in Byte
  • T = Typ
0bLLLL0101
  • length: variiert
  • type = 0b0101
Obligatorisch
1 uint8 Verbindungsstatus
0bHAFRSSSS
  • H = On-Head-Erkennung
  • A = Verfügbarkeit der Verbindung
  • F = Fokusmodus
  • R = automatische Wiederverbindung
  • S = Verbindungsstatus
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?

  1. 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.

  2. Der IV (Initialisierungsvektor) ist das 2-Byte-Salt der Kontoschlüsseldaten mit Null-Padding, d.h. IV ist concat(salt, 14-byte ZEROs).

  3. 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
  • L = Länge der verschlüsselten Daten
  • T = Typ
0bLLLL0110
  • length: variiert
  • type = 0b0110
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:

  1. 0b00000100
    Dieser Kontoschlüssel wird nicht verwendet.
    Das ist der Standardschlüssel (siehe Kontoschlüssel).
  2. 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.
  3. 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
  1. Bit 0 (Oktett 6, MSB): Status des Audio-Schalters

    • „1“, wenn der Status des Audio-Schalters aktiviert ist
    • 0, andernfalls
  2. 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)
  3. Bit 2: Aktueller Multipoint-Status

    • 1, wenn Multipoint aktiviert ist
    • 0, andernfalls
  4. 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
  5. 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)
  6. 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:

Ü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