Cambio de audio
Debido a que los usuarios utilizan cada vez más varios dispositivos de origen de audio para realizar sus tareas diarias, la demanda de una solución más simple para administrar los auriculares usar en todos los dispositivos. El cambio de audio permite una transición fluida de las conexiones de los auriculares entre dispositivos según la actividad del usuario (p.ej., al inicio de una película) y las prioridades eventos (por ejemplo, una llamada entrante).
Principios de UX
- El cambio de conexión debe ser rápido y basarse en la acción del usuario.
- El cambio de conexión debe ser transparente para los usuarios controlar/revertir si el cambio no es deseable.
- El cambio debe respetar la privacidad del usuario.
Funciones
Buscador de cambio de audio: El Seeker es un dispositivo de fuente de audio (por ejemplo, un un teléfono o una tablet), y buscar auriculares cercanos para conectarlos cuando corresponda.
Proveedor de cambio de audio: Por lo general, el proveedor es un auricular que anuncia su el estado de presencia y conexión para que los buscadores tomen decisiones relacionadas con el cambio.
Descripción general de los requisitos
Para lograr el cambio inteligente, los proveedores deben cumplir con los siguientes requisitos:
Nombre | Descripción | Requisitos | ¿Obligatorio? |
---|---|---|---|
Escaneo de página | Para aceptar una nueva solicitud de conexión de otro Seeker cuando ya existe una conexión. Para proveedores de un solo punto, haz lo siguiente:
|
Se requiere el modo de análisis de la página de baja latencia (el intervalo de análisis no debe superar los 640 ms) para mejorar el rendimiento. Para compensar la duración de la batería y el rendimiento del cambio, el proveedor puede tener un modo de escaneo de página predeterminado en la mayoría de los casos (modo de bajo consumo; el intervalo de búsqueda no debe superar los 1, 280 ms). Sin embargo, debe usarse el modo de baja latencia en las siguientes situaciones:
|
Obligatorio |
Historial de conexiones | Para volver a la conexión anterior y reanudar la reproducción, si corresponde. El cambio se activará a través de las comunicaciones realizadas a través de las APIs de Message Stream. El evento de audio de pausa debe incluirse en el registro para reanudar la reproducción, si corresponde. |
Mantén el historial de conexiones y, además, implementa las APIs de Message Stream. | Obligatorio |
Estado de conexión | Para que los buscadores puedan decidir si se cambia de conexión.El estado de la conexión incluye lo siguiente:
|
Incluye el estado de conexión en el anuncio BLE y el flujo de mensajes. | Obligatorio |
Cambio de las capacidades del entorno de ejecución | El cambio de audio se puede habilitar actualizando el firmware del proveedor, por lo que las capacidades deben sincronizarse entre el Seeker y el proveedor durante el tiempo de ejecución. | Implementar las APIs de flujo de mensajes para acceder a las funciones del entorno de ejecución | Obligatorio |
Reglas de cambio configurables | Permite que Seeker configure la prioridad entre la transmisión de audio activa existente y las solicitudes nuevas de transmisión de audio mediante la configuración de preferencias del usuario. Por ejemplo, el Searchker de cambio de audio puede proporcionar una configuración de la IU para permitir que los usuarios habiliten o inhabiliten el cambio automático entre la transmisión de contenido multimedia y las llamadas. El Buscador de cambio de audio establecerá y obtendrá la regla de cambio a través de la transmisión de mensajes. |
Solo para proveedores multipunto. Implementa las APIs de Message Stream para que se puedan configurar las reglas de cambio entre dispositivos conectados. |
Opcional |
Cambio de dispositivos activos | Permite que el Seeker del cambio de audio simule el cambio de audio entre dispositivos conectados. En el lado del Buscador de cambio de audio, es posible que haya una IU para que los usuarios puedan cambiar fácilmente entre dispositivos conectados. |
Solo para proveedores multipunto. Implementa las APIs de transmisión de mensajes para el Buscador de cambio de audio para determinar la fuente de audio activa entre dispositivos conectados. |
Obligatorio |
Notificación de cambio multipunto | Permite que el Buscador de cambio de audio muestre la notificación de cambio. | Solo para proveedores multipunto. Implementa las APIs de transmisión de mensajes para notificar a los buscadores con cambio de audio conectados cuando se produce un cambio multipunto. |
Obligatorio |
Carga útil de publicidad
El Proveedor incluirá su estado de conexión actual en el anuncio, basada en los datos de la cuenta de Vinculación rápida descritos en Publicidad: Cuando no es detectable.
Ten en cuenta que la versión de la tabla 4.2 es 0x1.
Campo de estado de la conexión
Octeto | Tipo de datos | Descripción | Valor | ¿Obligatorio? |
---|---|---|---|---|
0 | uint8 |
Longitud y tipo de campo 0bLLTTTT
|
0bLL0101
|
Obligatorio |
1 | uint8 |
Estado de conexión 0bHAFRSSSS
|
0bHAFRSSSS
|
Obligatorio |
2 | uint8 |
Datos personalizados Actualmente, solo contiene el tipo de contenido que se utiliza para describir el uso de la transmisión de audio actual. El Buscador se lo enviará al Proveedor. |
El buscador de la transmisión activa actual envía el valor al proveedor a través del flujo de mensajes. 0 si la transmisión activa actual no es de Seeker. | Obligatorio |
3: var | Mapa de bits de dispositivos conectados Es un mapa de bits para mostrar qué dispositivos están conectados actualmente al proveedor. Todos los dispositivos vinculados están organizados en orden: un bit para un dispositivo enlazado. La longitud dependerá de la cantidad de dispositivos vinculados que haya el proveedor. |
El bit asignado se establece en 1 si el dispositivo está conectado al proveedor. De lo contrario, se establece en 0. Consulta Mapa de bits de dispositivos conectados para obtener más información. |
Opcional |
Tabla 4.1: Datos sin procesar del campo de estado de conexión
Marcas de conexión
0bH = detección en la cabeza
- 1, encabeza ahora
- 0; de lo contrario, no está en la cabeza o no hay sensor OHD
0bA = disponibilidad de conexión
- 1, si hay una conexión disponible
- 0; de lo contrario,
0bF = modo sin distracciones
- 1, en el modo enfocado ahora, no se permite el cambio de conexión para el contenido multimedia uso, es decir, sin cambio de A2DP a A2DP
- 0; de lo contrario,
0bR = reconectado automáticamente
- 1, si el proveedor reconecta la conexión actual automáticamente; es decir, no está conectado por usuarios (para varios puntos, si uno de los conexiones se reconecta de manera automática, se debe establecer en 1)
- 0; de lo contrario,
Estado de conexión
- 0x0: sin conexión
- 0x1: paginación
- 0x2: conectado, pero sin transferencia de datos
- 0x3: transferencia de datos que no son de audio (solo cuando se puede cambiar, si no, usando 0xF)
- 0x4: transmisión A2DP, AVRCP no aplicable
- 0x5: transmisión A2DP y reproducción de AVRCP
- 0x6: transmisión HFP (llamada telefónica/voip), incluido el tono en banda y sin banda
- 0x7: LE Audio - Transmisión de contenido multimedia sin control
- 0x8: LE Audio - Transmisión de contenido multimedia con control
- 0x9: LE Audio - Transmisión de llamadas
- 0xA: LE Audio - transmisión
- 0xF: Inhabilita el interruptor de conexión temporalmente (por ejemplo, actualización de firmware).
Tipo de contexto de audio de LE y estado de conexión
Se recomienda que el proveedor de audio de bajo consumo maneje todos los tipos de contexto especificados. en Números asignados 6.12.3 (a menos que el proveedor no admita explícitamente un tipo de contexto determinado) y mapea el tipo de contexto al estado de conexión, como se muestra a continuación.
- De conversación: 0 × 9
- Contenido multimedia: 0 × 8
- Juego: 0×7
- Instructivo: 0 × 7
- Asistentes de voz: 0×9
- En vivo: 0×9
- Efectos de sonido: 0x2
- Notificaciones: 0 × 2
- Tono de llamada: 0 × 9
- Alertas: 0x7
- Alarma de emergencia: 0x9
Para la situación de tipo de contexto de LE Audio mixto, como la reproducción de contenido multimedia durante la el Proveedor deberá utilizar el estado de conexión con la prioridad más alta; es decir, el uso 0×9 (llamada) para el escenario anterior en lugar de 0×8 (medios).
Mapa de bits de dispositivo conectado
Para evitar cambios de conexión no deseados, es posible que el Searchker deba saber dispositivos a los que están conectados los auriculares. Por ejemplo, si los auriculares está conectado al teléfono, el usuario no quiere que lo interrumpa cambio de conexión cuando uno de sus miembros de la familia inicia YouTube en el tablet.
Ten en cuenta que este mapa de bits es anónimo, el buscador no puede saber qué otra estos dispositivos están vinculados con el Proveedor. Por ejemplo, tomemos 5 dispositivos conectados:
- 0: laptop (0bx0000000)
- 1: teléfonoA (0b0x000000)
- 2: teléfonoB (0b00x00000)
- 3: tablet (0b000x0000)
- 4: TV (0b0000x000)
Si los dispositivos conectados actualmente son una laptop y una tablet, el valor del el mapa de bits será 0b10010000. El cambio en el pedido es aceptable si es inevitable, p.ej., cuando los usuarios restablecen la configuración de fábrica de los auriculares o cuando los dispositivos conectados cuentan alcance el límite superior.
Anuncio con resolución aleatoria
Para evitar el seguimiento y respetar la privacidad del usuario, el Proveedor debe rotar y Encriptar el campo según la clave de la cuenta mediante AES-CTR:
encrypted_connection_status_field = connection_status_raw_data ^ AES(Key, IV)
en el que
La clave se deriva de la clave de cuenta en uso, que se define en la siguiente sección.
La función HKDF, IETF RFC 5869, genera la clave con el modelo hash.
Key = HKDF(account_key, NULL, UTF8("SASS-RRD-KEY"),16)
El proveedor debe usar aquí la clave de la cuenta original, es decir, el primer byte de la clave es 0x04 y no se incluye en el patrón de uso.
El IV (vector inicial) es la sal de 2 bytes de los datos clave de la cuenta con cero relleno, es decir, IV es concat(sal, ceros de 14 bytes).
Los datos sin procesar del estado de la conexión se definen en la tabla 4.1, si los cambios en el estado de conexión, la sal y la RPA deben regenerarse mismo período de publicidad.
Esto hace que el campo de estado de conexión encriptado rote al mismo tiempo que la Los datos clave de la cuenta rotan.
El anuncio de BLE se estructurará de la siguiente manera:
Octeto | Tipo de datos | Descripción | Valor | ¿Obligatorio? |
---|---|---|---|---|
0 | uint8 |
Versión y marcas | 0 × 10 | Obligatorio |
1: t | Datos clave de la cuenta | varía | Obligatorio | |
t+1: s | Datos de la batería | varía | Opcional | |
s+1: var | Datos que se pueden resolver de manera aleatoria | varía | Obligatoria si la lista de claves de cuenta no está vacía; de lo contrario,está excluida. |
Tabla 4.2: Anuncio de BLE con datos que se pueden resolver de forma aleatoria
Los datos que se pueden resolver de forma aleatoria contienen lo siguiente:
Octeto | Tipo de datos | Descripción | Valor | ¿Obligatorio? |
---|---|---|---|---|
0 | uint8 |
Longitud y tipo de campo 0bLLTTTT
|
0bLL0110
|
Obligatorio |
1: var | Datos encriptados | varía | Obligatorio |
Tabla 4.2.1: Datos resolubles aleatorios
A modo de ejemplo, si los datos que se pueden resolver de forma aleatoria contienen una conexión encriptada status, el resultado desencriptado será el campo de estado de conexión.
Para evitar la manipulación, se deben modificar ligeramente los datos clave de la cuenta anteriores cuando los Datos que se pueden resolver al azar se incluyen en el anuncio. Normalmente, cuando cuando se crea el filtro de claves de cuenta, se produce un valor V combinando las cuentas clave con una sal. En su lugar, cuando también se están procesando datos anunciado, el valor V debe construirse de la siguiente manera:
V = concat(account_key, salt, random_resolvable_data)
Si se anuncian tanto datos de la batería como datos que se pueden resolver de forma aleatoria, V debe construirse de la siguiente manera:
V = concat(account_key, salt, battery_data, random_resolvable_data)
Clave de cuenta en uso
El cambio de conexión se basa en la cuenta, por lo que el proveedor debe incluir el la información de la cuenta de la conexión actual en el anuncio de BLE. Si el botón el dispositivo conectado actual es un Buscador de cambio de audio, el proveedor debería poder para obtener la clave de cuenta asociada a este Seeker, y úsala para lo siguiente: encriptar el campo de estado de la conexión. Si la fuente de audio conectada no es de audio switch Seeker, el proveedor debe usar la clave de cuenta que se usó más recientemente.
Antes de calcular el filtro de claves de cuenta, el proveedor debe modificar el primer byte de las claves de cuenta para incluir uno de los siguientes patrones en uso:
- 0b00000100
Esta clave de cuenta no está en uso.
Esta es la predeterminada (consulta Clave de la cuenta). - 0b00000101
Esta es la clave de cuenta que se usó más recientemente.
El campo de estado de la conexión está encriptado con esta clave de cuenta. No hay la información clave de la cuenta del estado de conexión actual, podría significar que dispositivos conectados o el dispositivo conectado no es un Buscador de cambio de audio. - 0b00000110
Esta es la clave de la cuenta que está en uso.
El campo de estado de la conexión está encriptado con esta clave de cuenta, y el estado El dispositivo conectado está asociado a esta clave de cuenta.
Esquema para la carga útil del cambio de audio
En la siguiente figura, se muestra el esquema de la carga útil del cambio de audio.
![](https://developers-dot-devsite-v2-prod.appspot.com/nearby/fast-pair/images/SASS-ble-payload-schematic.png?authuser=7&hl=es)
Mensajes
Cuando se conectan, el Seeker y el proveedor pueden usar la transmisión de mensajes para sincronizar audio capacidad de cambiar de conexión, activar un interruptor de conexión, establecer y obtener el cambio preferencia, notificar el estado de conexión, etcétera. Creamos un grupo de mensajes y los códigos de mensaje específicos para el cambio de audio, como se muestra a continuación.
Nombre del grupo de mensajes | Valor |
---|---|
Cambio de audio | 0x07 |
En las siguientes secciones, se incluyen detalles adicionales de cada código de mensaje.
Nombre del código del mensaje | Valor | Solo multipunto | Remitente | Persona que responde | Encriptar | MAC | Conf. |
---|---|---|---|---|---|---|---|
Cómo permitir el cambio de audio | 0 × 10 | N | Ambos | Ambos, mediante el código 0x11 | N | N | N |
Cómo notificar la función de cambio de audio | 0 × 11 | N | Ambos | Ambos | N | S | Y |
Cómo establecer el estado de varios puntos | 0 × 12 | Y | Buscador | Proveedor | N | S | Y |
Cómo establecer la preferencia de cambio | 0 × 20 | Y | Buscador | Proveedor | N | S | Y |
Cómo cambiar tu preferencia | 0 × 21 | Y | Buscador | Proveedor, con el código 0x22 | N | N | N |
Notificar la preferencia de cambio | 0 × 22 | Y | Proveedor | Buscador | N | N | N |
Cambia la fuente de audio activa(al dispositivo conectado) | 0 × 30 | Y | Buscador | Proveedor | N | S | Y |
Volver a cambiar | 0 × 31 | N | Buscador | Proveedor | N | S | Y |
Notificar un evento de interruptor multipunto | 0 × 32 | Y | Proveedor | Buscador | N | N | N |
Obtén el estado de la conexión | 0 × 33 | Y | Buscador | Proveedor, con el código 0x34 | N | N | N |
Notificar el estado de conexión | 0 × 34 | Y | Proveedor | Buscador | Y | N | N |
Notificar una conexión iniciada para el cambio de audio | 0 × 40 | N | Buscador | Proveedor | N | S | Y |
Indicar la clave de la cuenta en uso | 0 × 41 | N | Buscador | Proveedor | N | S | Y |
Envía datos personalizados | 0 × 42 | N | Buscador | Proveedor | N | S | Y |
Establece el destino de conexión para soltar | 0 × 43 | Y | Buscador | Proveedor | N | S | Y |
Tabla 4.3: Mensajes de cambio de audio
MAC de mensajes de cambio de audio
Para proporcionar autenticación de mensajes, todos los mensajes de Cambiar audio con Los datos que se envían del Seeker al proveedor requieren un código de autenticación de mensajes. Cuándo un mensaje con MAC, se debe confirmar para que el buscador sepa si el Proveedor reaccionó o no al mensaje.
Si la autenticación del mensaje se realiza correctamente, el Proveedor enviará el ACK para el mensaje:
Octeto | Tipo de datos | Descripción | Valor |
---|---|---|---|
0 | uint8 | Declaración | 0xFF |
1 | uint8 | Conf. | 0 × 01 |
2 - 3 | uint16 | Longitud de los datos adicionales | varía |
4 | uint8 | Cambio de audio | 0x07 |
5 | uint8 | Código de mensaje de cambio de audio | varía |
6: s | Datos adicionales | varía |
Si falla, el Proveedor enviará la NAK para el mensaje:
Octeto | Tipo de datos | Descripción | Valor |
---|---|---|---|
0 | uint8 | Declaración | 0xFF |
1 | uint8 | NAK | 0x02 |
2 - 3 | uint16 | Longitud de los datos adicionales | 0 × 0003 |
4 | uint8 | Motivo del error | varía |
5 | uint8 | Cambio de audio | 0x07 |
6 | uint8 | Código de mensaje de cambio de audio | varía |
Ten en cuenta que, si el proveedor es el remitente, no se requiere una dirección MAC.
Cómo obtener la capacidad de cambiar de audio
Tanto el proveedor de cambio de audio como el Seeker pueden comprobar si la Vinculación rápida conectada El Buscador o el proveedor admiten o no el cambio de audio usando el siguiente mensaje:
Octeto | Tipo de datos | Descripción | Valor |
---|---|---|---|
0 | uint8 | Cambio de audio | 0x07 |
1 | uint8 | Cómo obtener la capacidad de cambiar de audio | 0 × 10 |
2 - 3 | uint16 | Longitud de los datos adicionales | 0 |
Tabla 4.3.1.0: Capacidad para cambiar de audio
Notificar la función de cambio de audio
Al recibir el mensaje Obtén la capacidad de cambiar el audio código, el buscador o proveedor de cambio de audio responderá con una de las siguientes marcas:
Octeto | Tipo de datos | Descripción | Valor |
---|---|---|---|
0 | uint8 | Cambio de audio | 0x07 |
1 | uint8 | Notificar la función de cambio de audio | 0 × 11 |
2 - 3 | uint16 | Longitud de los datos adicionales | 20 si lo envía Seeker 4 si lo envía el proveedor |
4 a 5 | uint16 | Código de versión del cambio de audio | Un valor distinto de cero significa que admite el cambio de audio. El código de la versión actual (con la mejora de seguridad) es 0x0102. 0x0000 o sin respuesta en 1 segundo significa que el cambio de audio no es compatible con este dispositivo |
6 a 7 | flags | Marcas de capacidad de cambio de audio del proveedor Si Seeker envía esta información, se deben ignorar estos dos bytes. |
varía Consulta Marcas de función de cambio de audio |
8 a 15 | Nonce de mensaje Es obligatorio solo cuando Seeker lo envía |
varía | |
16 - 23 | Código de autenticación de mensajes Solo es obligatorio cuando Seeker lo envía |
varía |
Tabla 4.3.1.1: Función de notificación de cambio de audio
Marcas de capacidad de cambio de audio
Bit 0 (octeto 6, MSB): Estado del cambio de audio
- 1, si el estado de cambio de audio está activado
- 0; de lo contrario,
Bit 1: Configurabilidad multipunto
- 1, si el dispositivo es compatible con multipunto y puede cambiar entre encendido y desactivada
- 0, de lo contrario (no es compatible con la función multipunto o que la multipunto esté siempre activada)
Bit 2: Estado actual multipunto
- 1, si multipunto está activado
- 0; de lo contrario,
Bit 3: Detección en la cabeza
- 1, si este dispositivo admite la detección de cabeza (incluso si la detección en la cabeza es desactivada ahora)
- 0; de lo contrario,
Bit 4: Estado actual de la detección en la cabeza
- 1, si la detección de cabeza está activada
- 0, de lo contrario (no es compatible con la detección en frente o en la cabeza no es compatible inhabilitada)
Todos los demás bits están reservados, el valor predeterminado es 0.
Establece el estado de varios puntos
En las buscadores de cambio de audio, es posible que proporcionemos la configuración para que los usuarios activen o desactiven la función y la funcionalidad multipunto. El buscador establecerá el estado multipunto en el proveedor usando el siguiente mensaje:
Octeto | Tipo de datos | Descripción | Valor |
---|---|---|---|
0 | uint8 | Cambio de audio | 0x07 |
1 | uint8 | Establece el estado de varios puntos | 0 × 12 |
2 - 3 | uint16 | Longitud de los datos adicionales | 17 |
4 | uint8 | Estado multipunto | 0: apagar multipunto 1: encender multipunto |
5 - 12 | Nonce del mensaje | varía | |
13 a 20 | Código de autenticación de mensajes | varía |
Tabla 4.3.1.2: Establece el estado de varios puntos
Establecer preferencia de cambio
Los buscadores de cambio de audio pueden modificar la preferencia de cambio de multipunto y establecer al proveedor usando el siguiente mensaje:
Octeto | Tipo de datos | Descripción | Valor |
---|---|---|---|
0 | uint8 | Cambio de audio | 0x07 |
1 | uint8 | Establecer preferencia de cambio | 0 × 20 |
2 - 3 | uint16 | Longitud de los datos adicionales | 18 |
4 | flags | Cambio de preferencia | varía. Consulta la marca de preferencia de cambio de varios puntos. |
5 | Configuración avanzada de cambio Este byte está reservado, el valor predeterminado es 0 |
varía | |
6 - 13 | Nonce del mensaje | varía | |
14 - 21 | Código de autenticación de mensajes | varía |
Tabla 4.3.2.0: Cómo establecer la preferencia de cambio
Marca de preferencia de cambio de varios puntos
- Bit 0 (MSB): A2DP frente a A2DP (valor predeterminado: 0)
- Bit 1: HFP vs. HFP (valor predeterminado: 0)
- Bit 2: A2DP frente a HFP (valor predeterminado: 0)
- Bit 3: HFP vs. A2DP (valor predeterminado: 1)
- Bit 4 - 7: reservados
- El ejemplo de arriba representa como “nueva solicitud de perfil” en comparación con "perfil activo actual"
- 0 por no cambiar
- 1 para cambiar
Obtener preferencia de cambio
Los buscadores de cambio de audio pueden consultar la preferencia de cambio de multipunto desde el proveedor usando el siguiente mensaje:
Octeto | Tipo de datos | Descripción | Valor |
---|---|---|---|
0 | uint8 | Cambio de audio | 0x07 |
1 | uint8 | Obtener configuración de cambio | 0 × 21 |
2 - 3 | uint16 | Longitud de los datos adicionales | 0 |
Tabla 4.3.2.1: Cómo obtener preferencias de cambio
Notificar preferencia de cambio
Octeto | Tipo de datos | Descripción | Valor |
---|---|---|---|
0 | uint8 | Cambio de audio | 0x07 |
1 | uint8 | Notificar preferencia de cambio | 0 × 22 |
2 - 3 | uint16 | Longitud de los datos adicionales | 2 |
4 | flags | Cómo cambiar marcas de preferencia | varía. Consulta la marca de preferencia de cambio de varios puntos. |
5 | Configuración avanzada de cambio Este byte está reservado, el valor predeterminado debe ser 0 |
varía |
Tabla 4.3.2.2: Preferencias de cambio de notificaciones
Cambiar fuente de audio activa (al dispositivo conectado)
Los buscadores de cambio de audio pueden solicitar al proveedor multipunto que cambie el activo fuente de audio entre dispositivos conectados usando el siguiente mensaje:
Octeto | Tipo de datos | Descripción | Valor |
---|---|---|---|
0 | uint8 | Cambio de audio | 0x07 |
1 | uint8 | Cambiar fuente de audio activa (al dispositivo conectado) | 0 × 30 |
2 - 3 | uint16 | Longitud de los datos adicionales | 17 |
4 | flags | Cómo cambiar marcas activas de eventos de fuentes de audio | varía Consulta Cómo cambiar un evento de fuente de audio activo |
5 - 12 | Nonce del mensaje | varía | |
13 a 20 | Código de autenticación de mensajes | varía |
Tabla 4.3.3.0: Cambiar la fuente de audio activa (al dispositivo conectado)
Cambiando un evento de fuente de audio activo
- Bit 0 (MSB): 1 cambio a este dispositivo, 0 cambio al segundo dispositivo conectado
- Bit 1: 1 reanuda la reproducción en el interruptor de dispositivo después del cambio; de lo contrario, 0 Si se reanuda el juego, el proveedor envía una notificación de REPRODUCCIÓN al Buscador a través del perfil AVRCP. Si el estado anterior (antes del cambio) no era PLAY, el proveedor debe ignorar esta marca.
- Bit 2: 1 SCO de rechazo en el dispositivo alejado, 0 de lo contrario
- Bit 3: 1 desconecta el Bluetooth en el dispositivo alejado; de lo contrario, 0.
- Bit 4 - 7: reservado.
Es posible que los buscadores de cambio de audio no siempre conozcan su estado correctamente, para que el proveedor reciba un mensaje "cambiar a este dispositivo" mensaje cuando el Buscador el dispositivo activo. En este caso, para mostrar la IU correcta en Seeker, El proveedor puede enviar una NAK con el motivo del error, 0x4: acción redundante del dispositivo.
En el caso de un proveedor de audio de bajo consumo que tiene más de un miembro establecido, el proveedor debe desconectar a todos los miembros del Buscador; de lo contrario, la pila Bluetooth de la El solicitante se reconectaría con el proveedor.
Volver a cambiar (dispositivo desconectado)
Si no desea cambiar de conexión, los usuarios pueden revertir el cambio. en algunos casos, tiene sentido restablecer la conexión de audio para minimizar interrupciones. El Buscador usará el siguiente mensaje para activar el cambio de vuelta:
Octeto | Tipo de datos | Descripción | Valor |
---|---|---|---|
0 | uint8 | Cambio de audio | 0x07 |
1 | uint8 | Volver a cambiar (dispositivo desconectado) | 0 × 31 |
2 - 3 | uint16 | Longitud de los datos adicionales | 17 |
4 | uint8 | Cambiar evento | varía 0x01: volver atrás 0x02: volver atrás y reanudar la reproducción |
5 - 12 | Nonce del mensaje | varía | |
13 a 20 | Código de autenticación de mensajes | varía |
Tabla 4.3.3.1: Cómo volver a cambiar (al dispositivo desconectado)
En el caso de los proveedores multipunto, para realizar un cambio de conexión, un proveedor puede quitar conexión con un dispositivo fuente de audio y pausar la sesión de audio en el otro fuente de audio. Por ejemplo, imagina que los auriculares multipunto están conectados a un y un tercer dispositivo con cambio de audio compatible. El usuario está viendo un video en la tableta cuando recibe una llamada en su teléfono. Se activará el teléfono un interruptor de conexión en los auriculares, que necesita soltar para establecer conexión con el teléfono y, al mismo tiempo, pausar el contenido multimedia en la tablet para obtener el tono del teléfono. Si el usuario rechaza para realizar la llamada, es posible que el teléfono les pida a los auriculares "volver a cambiar y reanudar la reproducción". Luego de recibir esta solicitud, los auriculares deben volver a conectarse al tercer dispositivo. reanuda la reproducción del video pausado en la tableta.
Notificar un evento de cambio de varios puntos
Para informar a los usuarios que se está llevando a cabo un evento de cambio de varios puntos, el interruptor de audio Es posible que el buscador muestre una notificación a los usuarios. El proveedor debe notificar Cambio de audio: Buscadores sobre el evento de cambio.
Octeto | Tipo de datos | Descripción | Valor |
---|---|---|---|
0 | uint8 | Cambio de audio | 0x07 |
1 | uint8 | Notificar un evento de cambio de varios puntos El proveedor debe enviarlo en cada interruptor, incluidos el cambio de audio en el Seeker con el cambio de audio en el Seeker, el de cambio de audio en el Seeker y el de cambio de audio en el Seeker y el de cambio de audio en el Seeker. |
0 × 32 |
2 - 3 | uint16 | Longitud de los datos adicionales | varía |
4 | uint8 | Motivo del cambio Este valor se debe determinar en función del Estado de conexión. Para los casos de uso de LE Audio, puede ser útil revisar la asignación entre LE Audio Context Type y Connection state. Por ejemplo, el estado de conexión correspondiente a los asistentes de voz es 0x9(LE audio - transmisión de llamadas). Por lo tanto, el motivo del cambio que iniciaron los asistentes de voz debería ser 0x02. |
varía 0x00: Sin especificar 0x01: Medios (p.ej., transmisión A2DP, transmisión de medios LEA) 0x02: Llamada (p.ej., transmisión HFP, transmisión de llamada LEA) |
5 | uint8 | Dispositivo de destino | varía 0x01: este dispositivo 0x02: otro dispositivo conectado |
6 - n | utf8 | Nombre del dispositivo de destino si el dispositivo de destino es el Buscador de cambio de audio, con el nombre al que se envió el Buscador; de lo contrario, se usará el nombre de Bluetooth, si no corresponde, con los últimos 2 bytes de su dirección |
varía |
Tabla 4.3.3.2: Cómo notificar un evento de interruptor multipunto
Obtén el estado de la conexión
El Buscador puede obtener el estado de conexión actual del proveedor:
Octeto | Tipo de datos | Descripción | Valor |
---|---|---|---|
0 | uint8 | Cambio de audio | 0x07 |
1 | uint8 | Obtén el estado de la conexión | 0 × 33 |
2 - 3 | uint16 | Longitud de los datos adicionales | 0 |
Tabla 4.3.3.3: Cómo obtener el estado de la conexión
Al recibir este mensaje, el Proveedor responderá con el código de mensaje 0x34, notifica el estado de conexión.
Notificar el estado de conexión
Según se define en la carga útil de publicidad de BLE, por proveedores multipunto, si cambia el estado de la conexión, excepto si se modifica paquete de publicidad, el Proveedor también deberá notificar a los buscadores conectados qué usan la misma clave de cuenta en relación con el cambio. Si el proveedor está conectado con un Buscador de cambio de audio y un Buscador de cambio de audio que no sea de audio, si Switch Seeker está activo, el proveedor también deberá notificar al Audio conectado cambiar al buscador sobre el estado de conexión (a través de la clave de cuenta del Buscador).
Octeto | Tipo de datos | Descripción | Valor |
---|---|---|---|
0 | uint8 | Cambio de audio | 0x07 |
1 | uint8 | Notificar el estado de conexión | 0 × 34 |
2 - 3 | uint16 | Longitud de los datos adicionales | varía |
4 | uint8 | Marca de dispositivo activo | Varía 0x00: este Seeker es pasivo y el dispositivo activo usa la misma clave de cuenta 0x01: este Seeker es el dispositivo activo 0x02: este Seeker es pasivo y el dispositivo activo es un Seeker con un interruptor de audio que no es de audio. |
5 - n | Estado de la conexión encriptada | varía | |
n+1 - n+8 | Nonce del mensaje | varía |
Tabla 4.3.3.4: Cómo notificar el estado de conexión
Mensaje de estado de conexión encriptada
encrypted_connection_status = connection_status_raw_data ^ AES(Key, IV)
Donde:
La clave se deriva de la clave de la cuenta en uso. Consulta Anuncio Con resolución aleatoria.
Key = HKDF(account_key, NULL, UTF8("SASS-RRD-KEY"),16)
IV es concat(nonce_sesión, nonce_mensaje)
connection_status_raw_data = concat(estado_de_conexión, datos_personalizados, connect_devices) que se define en BLE carga útil publicitaria Ten en cuenta que el byte de longitud y tipo de campo no debe incluirse, ya que aquí tenemos el código del mensaje y la longitud de los datos.
Notificar la conexión iniciada de cambio de audio
Es posible que los proveedores de cambio de audio deban saber si se activó el cambio de conexión por cambio de audio para que se muestren reacciones diferentes, p.ej., inhabilitar los íconos sonoros para audio cambiar eventos. El Buscador envía un mensaje para notificar al proveedor que este es una conexión iniciada por el cambio de audio.
Octeto | Tipo de datos | Descripción | Valor |
---|---|---|---|
0 | uint8 | Cambio de audio | 0x07 |
1 | uint8 | Notificar la conexión iniciada de cambio de audio | 0 × 40 |
2 - 3 | uint16 | Longitud de los datos adicionales | 17 |
4 | uint8 | Indicación de conexión iniciada de cambio de audio | varía 0: El cambio de audio no activó esta conexión 1, ya que se trata de una conexión que inició el cambio de audio. |
5 - 12 | Nonce del mensaje | varía | |
13 a 20 | Código de autenticación de mensajes | varía |
Tabla 4.3.4.0: Cómo notificar la conexión iniciada con el cambio de audio
Indica la clave de cuenta en uso
Si varias claves de cuenta en el Seeker (por ejemplo, multiusuarios) se asocian con el Proveedor, el Buscador usará el siguiente mensaje para indicar qué cuenta está en uso.
Octeto | Tipo de datos | Descripción | Valor |
---|---|---|---|
0 | uint8 | Cambio de audio | 0x07 |
1 | uint8 | Indica la clave de cuenta en uso | 0 × 41 |
2 - 3 | uint16 | Longitud de los datos adicionales | 22 |
4 a 9 | utf8 | Cadena en uso | UTF8 ("en uso") |
10 - 17 | Nonce del mensaje | varía | |
18 - 25 | Código de autenticación de mensajes | varía |
Tabla 4.3.4.1: Cómo indicar en el uso la clave de la cuenta
Cuando reciba este mensaje, el Proveedor podrá saber qué clave de cuenta está en uso verificando el código de autenticación de mensajes.
Envía datos personalizados
El Buscador de cambio de audio activo puede encapsular la información (p.ej., audio uso) de una transmisión de audio en bytes de datos personalizados y enviarlos al proveedor mediante el siguiente mensaje:
Octeto | Tipo de datos | Descripción | Valor |
---|---|---|---|
0 | uint8 | Cambio de audio | 0x07 |
1 | uint8 | Envía datos personalizados | 0 × 42 |
2 - 3 | uint16 | Longitud de los datos adicionales | 17 |
4 | uint8 | Datos personalizados | varía |
5 - 12 | Nonce del mensaje | varía | |
13 a 20 | Código de autenticación de mensajes | varía |
Tabla 4.3.4.2: Envío de datos personalizados
Una vez recibidos los datos personalizados, el Proveedor actualizará el paquete de publicidad. para incluir los datos personalizados. Para un proveedor multipunto, también debe notificar al el estado de conexión cambiará a otro Seeker conectado con la misma clave de cuenta.
Establecer objetivo de caída de la conexión
En auriculares multipunto, si la conexión preferida que se debe soltar no es la se usó recientemente, las personas con cambio de audio pueden indicar al proveedor qué dispositivo para descartar con el siguiente mensaje:
Octeto | Tipo de datos | Descripción | Valor |
---|---|---|---|
0 | uint8 | Cambio de audio | 0x07 |
1 | uint8 | Establecer objetivo de caída de la conexión | 0 × 43 |
2 - 3 | uint16 | Longitud de los datos adicionales | 17 |
4 | uint8 | Cómo establecer como objetivo el dispositivo conectado que se soltará | varía 1: este dispositivo |
5 - 12 | Nonce del mensaje | varía | |
13 a 20 | Código de autenticación de mensajes | varía |
Tabla 4.3.4.3: Establece el destino de conexión para soltar
Implementación de referencia
Consulta la biblioteca de SDK incorporados de Nearby para obtener la implementación de referencia.