Cambio de audio

Dado que los usuarios usan cada vez más dispositivos de fuentes de audio para realizar sus tareas diarias, existe una demanda creciente por una solución más simple para administrar el uso de auriculares en todos los dispositivos. El cambio de audio transiciona sin problemas las conexiones de los auriculares entre dispositivos según la actividad del usuario (p.ej., comenzar una película) y los eventos priorizados (p.ej., una llamada entrante).

Principios de UX

  1. El cambio de conexión debe ser rápido y basarse en la acción del usuario.
  2. El cambio de conexión debe ser transparente para los usuarios, de modo que estos puedan controlarlo o revertirlo si no lo desean.
  3. El cambio debe respetar la privacidad del usuario.

Roles

Buscador de cambio de audio: Es un dispositivo de fuente de audio (por ejemplo, un teléfono o una tablet) que busca auriculares cercanos para conectarlos cuando corresponda.

Proveedor de cambio de audio: Por lo general, el proveedor es un auricular que anuncia su presencia y estado de conexión para que los solicitantes tomen decisiones sobre 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 solicitud de conexión nueva de otro Seeker cuando hay una existente.
Para proveedores de un solo punto:
  • El dispositivo de origen original pausará automáticamente la reproducción de audio cuando se desconecte el proveedor.
Para proveedores de varios puntos:
  • Si todavía hay una conexión disponible, aceptará la solicitud de conexión.
  • Si el ancho de banda está completo, desconecta la que se usó por última vez (p.ej., si no hubo eventos de audio durante mucho tiempo) y acepta la nueva solicitud entrante.
Se requiere el modo de búsqueda de páginas de baja latencia (el intervalo de escaneo 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 búsqueda de página predeterminado para la mayoría de los casos (modo de bajo consumo, el intervalo de análisis no debe superar los 1,280 ms). Sin embargo, el modo de baja latencia debe usarse en las siguientes situaciones:
  • Primeros 30 segundos de encendido
  • Primeros 30 segundos sin conexión ni paginación
  • Primeros 30 segundos de inactividad del dispositivo
Obligatorio
Historial de conexiones Para volver a la conexión anterior y reanudar la reproducción, si corresponde.
El cambio se activará mediante comunicaciones a través de las APIs de Message Stream.
El evento de pausa se debe incluir en la grabación para reanudar la reproducción, si corresponde.
Conserva el historial de conexiones y, además, implementa las APIs de Message Stream. Obligatorio
Estado de conexión Para que los solicitantes realicen la evaluación de cambio de conexión.El estado de conexión incluye lo siguiente:
  • Estado de conexión
  • Tipo de audio de la conexión activa
  • Información de la cuenta de la conexión activa
  • Dispositivos conectados
Incluye el estado de conexión en los anuncios de BLE y el flujo de mensajes. Obligatorio
Cambio de 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 Seeker y el proveedor en el tiempo de ejecución. Implementa las APIs de Message Stream para acceder a las capacidades 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 nuevas solicitudes de transmisión de audio mediante la configuración de preferencias del usuario.
Por ejemplo, Seeker puede proporcionar una configuración de 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 del flujo de mensajes.
Solo proveedores de varios puntos.
Implementa las APIs de flujo de mensajes para que se puedan configurar las reglas de cambio entre dispositivos conectados.
Opcional
Cambio de dispositivo activo Permite que el Seeker de cambio de audio simule el cambio de audio entre dispositivos conectados.
En el lado de Seeker del cambio de audio, es posible que haya una IU para que los usuarios cambien fácilmente entre dispositivos conectados.
Solo proveedores de varios puntos.
Implementa las API de Message Stream para el Seeker del cambio de audio para determinar la fuente de audio activa entre los dispositivos conectados.
Obligatorio
Notificación de cambio de varios puntos Permite que el buscador de cambio de audio muestre la notificación de cambio. Solo proveedores de varios puntos.
Implementa las APIs de flujo de mensajes para notificar a los buscadores de interruptores de audio conectados cuando se produce un cambio de varios puntos.
Obligatorio

Carga útil de publicidad

El Proveedor deberá incluir su estado de conexión actual en el anuncio, basado en los datos de la cuenta de Vinculación rápida que se describen 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 del campo
0bLLLLTTTT
  • L = longitud del estado de conexión en bytes
  • T = tipo
0bLLLL0101
  • longitud: varía
  • tipo = 0b0101
Obligatorio
1 uint8 Estado de conexión
0bHAFRSSSS
  • H = detección de cabeza
  • A = disponibilidad de conexión
  • F = modo de enfoque
  • R = conectado automáticamente
  • S = estado de conexión
0bHAFRSSSS
Obligatorio
2 uint8 Datos personalizados
Actualmente, solo incluye el tipo de contenido que se usa para describir el uso de la transmisión de audio actual. El buscador se la enviará al proveedor.
El valor se envía desde el buscador de la transmisión activa actual al proveedor a través del flujo de mensajes. 0 si la transmisión activa actual no proviene de Seeker. Obligatorio
3: var Mapa de bits de dispositivos conectados
Es un mapa de bits que muestra qué dispositivos están conectados actualmente al proveedor. Todos los dispositivos conectados están organizados en orden, un bit para un dispositivo vinculado. La longitud dependerá de la cantidad de dispositivos vinculados del proveedor que haya.
El bit asignado se establece en 1 si el dispositivo está conectado actualmente al proveedor; de lo contrario, se fija en 0.
Consulta Mapa de bits de dispositivo conectado 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 = en detección de cabeza

    • 1, en la cabeza ahora
    • 0; de lo contrario, no sobre la cabeza o no hay sensor OHD
  • 0bA = disponibilidad de la conexión

    • 1, hay una conexión disponible
    • 0, de lo contrario
  • 0bF = modo de enfoque

    • 1, en el modo enfocado ahora, no se permite el cambio de conexión para el uso de contenido multimedia, es decir, no se puede cambiar de A2DP a A2DP
    • 0, de lo contrario
  • 0bR = reconexión automática

    • 1, si el proveedor vuelve a conectar automáticamente la conexión actual, lo que significa que los usuarios no la conectan (para varios puntos, si una de las conexiones existentes se vuelve a conectar automáticamente, 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 es de audio (solo cuando se pueden cambiar, si no es así, mediante 0xF)
  • 0x4: Transmisión A2DP, AVRCP no aplicable
  • 0x5: Transmisión A2DP y reproducción AVRCP
  • 0x6: Transmisión de HFP (llamada de teléfono/voip), incluidos el tono dentro y fuera de banda
  • 0x7: LE Audio (transmisión de contenido multimedia sin control)
  • 0x8: LE Audio, transmisión multimedia con control
  • 0x9: LE Audio - Transmisión de llamadas
  • 0xA: LE Audio: transmisión
  • 0xF: Inhabilita el cambio de conexión de forma temporal (p.ej., la actualización de firmware)
Mapa de bits de dispositivo conectado

Para evitar un cambio de conexión no deseado, es posible que el buscador necesite saber a qué dispositivos están conectados los auriculares. Por ejemplo, cuando los auriculares están conectados al teléfono, el usuario no quiere que el cambio de conexión lo interrumpa cuando uno de los miembros de su familia inicia YouTube en la tablet.

Ten en cuenta que este mapa de bits es anónimo, por lo que Seeker no puede saber qué otros dispositivos están vinculados con el proveedor. Por ejemplo, analicemos los 5 dispositivos vinculados:

  • 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 mapa de bits será 0b10010000. El cambio de orden es aceptable si no se puede evitar, p.ej., cuando los usuarios restablecen la configuración de fábrica de los auriculares o cuando el recuento de dispositivos vinculados alcanza el límite superior.

Anuncio aleatorio que se puede resolver

Para evitar realizar un seguimiento y respetar la privacidad del usuario, el Proveedor debe rotar y encriptar el campo con la clave de la cuenta mediante AES-CTR:

 encrypted_connection_status_field = connection_status_raw_data ^ AES(Key, IV)

en el que

  1. La clave se deriva de la clave de la cuenta en uso, que se define en la siguiente sección.

    • La función de HKDF, IETF RFC 5869, genera la clave con la función de hash SHA-256.

        Key = HKDF(account_key, NULL, UTF8("SASS-RRD-KEY"),16)
      
    • El proveedor usará la clave de cuenta original aquí, es decir, el primer byte de la clave es 0x04, no incluido en el patrón de uso.

  2. IV (vector inicial) es la sal de 2 bytes de datos clave de cuenta sin relleno, es decir, IV es concat(sal, Ceros de 14 bytes).

  3. Los datos sin procesar del estado de conexión se definen en la tabla 4.1. Si el estado de la conexión cambia, la sal y el RPA deben regenerarse en el mismo período publicitario.

Esto hace que el campo de estado de la conexión encriptada rote al mismo tiempo que los datos de la clave de la cuenta.

El anuncio 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 aleatoriamente varía Es obligatoria si la lista de claves de la cuenta no está vacía;
de lo contrario,se excluye.

Tabla 4.2: Anuncio de BLE con datos resolubles aleatorios

Los datos resolubles aleatorios contienen lo siguiente:

Octeto Tipo de datos Descripción Valor ¿Obligatorio?
0 uint8 Longitud y tipo del campo
0bLLLLTTTT
  • L = longitud de los datos encriptados
  • T = tipo
0bLLLL0110
  • longitud: varía
  • tipo = 0b0110
Obligatorio
1: var Datos encriptados varía Obligatorio

Tabla 4.2.1: Datos aleatorios que se pueden resolver

Por ejemplo, si los datos con problemas aleatorios contienen un campo de estado de conexión encriptado, el resultado desencriptado será el campo de estado de la conexión.

Para evitar alteraciones, los datos de la clave de la cuenta mencionados anteriormente deben modificarse ligeramente cuando se incluyan en el anuncio los datos que se puedan resolver aleatoriamente. Por lo general, cuando se compila el filtro de clave de cuenta, se produce un valor V combinando el filtro de clave de cuenta con una sal. En cambio, cuando también se anuncian datos resolubles aleatorios, el valor V debe construirse de la siguiente manera:

 V = concat(account_key, salt, random_resolvable_data)

Si se anuncian tanto datos de batería como datos resolubles aleatorios, 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 la información de la cuenta de la conexión actual en el anuncio BLE. Si el dispositivo conectado actual es un Seeker de cambio de audio, el proveedor debería poder obtener la clave de la cuenta asociada con ese buscador y usarla para encriptar el campo de estado de la conexión. Si la fuente de audio conectada no es un buscador de interruptores de audio, 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 de uso:

  1. 0b00000100
    Esta clave de cuenta no está en uso.
    Esta es la predeterminada (consulta Clave de cuenta).
  2. 0b00000101
    Esta clave de cuenta es la que se usó más recientemente.
    Esta clave de cuenta encripta el campo de estado de la conexión. No hay información clave de la cuenta sobre el estado actual de la conexión, lo que podría significar que no hay dispositivos conectados o que el dispositivo conectado no es un buscador de cambio de audio.
  3. 0b00000110
    Esta clave de cuenta es la que está en uso.
    El campo de estado de la conexión está encriptado por esta clave de cuenta, y el dispositivo conectado actual está asociado con esta clave.

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.

Mensajes

Cuando se conectan, Seeker y el proveedor pueden usar la Transmisión de mensajes para sincronizar la capacidad de cambio de audio, activar un cambio de conexión, configurar y obtener la preferencia de cambio, notificar el estado de la conexión, etcétera. Creamos un grupo de mensajes y 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 0 × 07

En las siguientes secciones, se incluyen detalles adicionales para cada código de mensaje.

Nombre del código del mensaje Valor Solo varios puntos Remitente Persona que responde Encriptar MAC Confirmación
Obtén la capacidad de cambiar el audio 0 × 10 N Ambos Ambos, mediante el código 0x11 N N N
Función de notificación sobre el cambio de audio 0 × 11 N Ambos Ambos N S
Configura el estado de varios puntos 0 × 12 Buscador Proveedor N S
Establecer preferencias de cambio 0 × 20 Buscador Proveedor N S
Obtener preferencias de cambio 0 × 21 Buscador Proveedor, mediante el código 0x22 N N N
Notificar al cambio de preferencia 0 × 22 Proveedor Buscador N N N
Cambia la fuente de audio activa(al dispositivo conectado) 0 × 30 Buscador Proveedor N S
Volver a cambiar (al dispositivo desconectado) 0 × 31 N Buscador Proveedor N S
Notificar evento de interruptor de varios puntos 0 × 32 Proveedor Buscador N N N
Obtén el estado de la conexión 0 × 33 Buscador Proveedor, mediante el código 0x34 N N N
Notificar el estado de la conexión 0 × 34 Proveedor Buscador N N
Notificar la conexión iniciada por el cambio de audio 0 × 40 N Buscador Proveedor N S
Indicar la clave de cuenta de uso 0 × 41 N Buscador Proveedor N S
Cómo enviar datos personalizados 0 × 42 N Buscador Proveedor N S
Establece el objetivo de conexión directa 0 × 43 Buscador Proveedor N S

Tabla 4.3: Mensajes de cambio de audio

Mensajes de MAC de cambio de audio

Para proporcionar la autenticación de mensajes, todos los mensajes de cambio de audio con datos adicionales enviados de Seeker al proveedor requieren un código de autenticación de mensajes. Cuando se recibe un mensaje con MAC, se debe confirmar para que el buscador sepa si el proveedor reaccionó al mensaje.

Si la autenticación del mensaje se ejecuta correctamente, el proveedor enviará el ACK para el mensaje:

Octeto Tipo de datos Descripción Valor
0 Uint8 Confirmación 0xFF
1 Uint8 Confirmación 0x01
Entre 2 y 3 Uint16 Longitud adicional de los datos varía
4 Uint8 Cambio de audio 0 × 07
5 Uint8 Código del mensaje de cambio de audio varía
6: s Datos adicionales varía

Si falla, el Proveedor enviará el NAK para el mensaje:

Octeto Tipo de datos Descripción Valor
0 Uint8 Confirmación 0xFF
1 Uint8 NAK 0x02
Entre 2 y 3 Uint16 Longitud adicional de los datos 0x0003
4 Uint8 Motivo del error varía
5 Uint8 Cambio de audio 0 × 07
6 Uint8 Código del mensaje de cambio de audio varía

Ten en cuenta que, si el proveedor es el remitente, no se requiere una MAC.

Obtener la función de cambio de audio

Tanto el proveedor de cambio de audio como el Seeker pueden verificar si el Seeker o el proveedor de Vinculación rápida conectados admite el cambio de audio o no mediante el siguiente mensaje:

Octeto Tipo de datos Descripción Valor
0 Uint8 Cambio de audio 0 × 07
1 Uint8 Obtener la función de cambio de audio 0 × 10
Entre 2 y 3 Uint16 Longitud adicional de los datos 0

Tabla 4.3.1.0: Cómo obtener la capacidad del cambio de audio

Función Notificar el cambio de audio

Cuando recibas el código de mensaje get capability of Audio switch, el Seeker/Provider del cambio de audio responderá con una de las siguientes marcas:

Octeto Tipo de datos Descripción Valor
0 Uint8 Cambio de audio 0 × 07
1 Uint8 Función Notificar el cambio de audio 0 × 11
Entre 2 y 3 Uint16 Longitud adicional de los datos 20 si esto lo envía el buscador
4 si lo envía el proveedor
4 - 5 Uint16 Código de versión de 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 ninguna respuesta en 1 segundo significa que este dispositivo no admite el cambio de audio
6 a 7 flags Marcas de capacidad de cambio de audio del proveedor
Si Seeker envía esto, se deben ignorar estos dos bytes.
varía
Consulta Marcas de capacidad de cambio de audio
8 a 15 Nonce del mensaje
Solo es obligatorio cuando el buscador lo envía
varía
16 a 23 Código de autenticación de mensajes
Solo es necesario cuando Seeker lo envía
varía

Tabla 4.3.1.1: Función de notificación del cambio de audio

Marcas de capacidad de cambio de audio
  1. Bit 0 (octeto 6, MSB): Estado del cambio de audio

    • 1, si el estado de cambio de audio está activado
    • 0, de lo contrario
  2. Bit 1: Configuración de varios puntos

    • 1, si el dispositivo admite varios puntos y se puede activar o desactivar
    • 0; de lo contrario, (no admite la ejecución de varios puntos o múltiples puntos siempre está activada)
  3. Bit 2: Estado actual de varios puntos

    • 1, si la función de varios puntos está activada
    • 0, de lo contrario
  4. Bit 3: Detección de cabeza

    • 1, si este dispositivo admite la detección de cabeza (incluso si está desactivada en este momento)
    • 0, de lo contrario
  5. Bit 4: Estado actual de detección en la cabeza

    • 1, si la detección de cabeza está activada
    • 0, de lo contrario (no admite la detección de cabeza o está inhabilitada)
  6. Todos los demás bits están reservados, cuyo valor predeterminado es 0.

Establecer estado de varios puntos

En los Seekers de cambio de audio, podemos proporcionar la configuración para que los usuarios activen o desactiven la funcionalidad multipunto. El buscador establecerá el estado de varios puntos del proveedor mediante el siguiente mensaje:

Octeto Tipo de datos Descripción Valor
0 Uint8 Cambio de audio 0 × 07
1 Uint8 Establecer estado de varios puntos 0 × 12
Entre 2 y 3 Uint16 Longitud adicional de los datos 17
4 Uint8 Estado de varios puntos 0: desactivar varios puntos
1: activar varios puntos
5 a 12 Nonce del mensaje varía
13 - 20 Código de autenticación de mensajes varía

Tabla 4.3.1.2: Configuración del estado de varios puntos

Establecer preferencia de cambio

Los solicitantes de cambio de audio pueden modificar la preferencia de cambio de multipunto y establecerla en el proveedor mediante el siguiente mensaje:

Octeto Tipo de datos Descripción Valor
0 Uint8 Cambio de audio 0 × 07
1 Uint8 Establecer preferencia de cambio 0 × 20
Entre 2 y 3 Uint16 Longitud adicional de los datos 18
4 flags Cambio de preferencias varía
Consulta la marca de preferencia de cambio multipunto.
5 Configuración de cambio avanzada
Este byte está reservado; el valor predeterminado es 0
varía
6 a 13 Nonce del mensaje varía
14 a 21 Código de autenticación de mensajes varía

Tabla 4.3.2.0: Cómo establecer preferencias de cambio

Marca de preferencia de cambio de varios puntos
  • Bit 0 (MSB): A2DP frente a A2DP (el predeterminado es 0)
  • Bit 1: HFP frente a HFP (valor predeterminado 0)
  • Bit 2: A2DP frente a HFP (el predeterminado es 0)
  • Bit 3: HFP frente a A2DP (predeterminado 1)
  • Bit 4-7: reservados
  • Arriba representa una "solicitud de perfil nuevo" en comparación con el "perfil activo actual"
    • 0 para no cambiar
    • 1 para cambiar

Obtener preferencias de cambio

Los buscadores de cambio de audio pueden consultar la preferencia de cambio de multipunto desde el proveedor mediante el siguiente mensaje:

Octeto Tipo de datos Descripción Valor
0 Uint8 Cambio de audio 0 × 07
1 Uint8 Obtener configuración de cambio 0 × 21
Entre 2 y 3 Uint16 Longitud adicional de los datos 0

Tabla 4.3.2.1: Obtén una preferencia de cambio

Notificar cambio de preferencia

Octeto Tipo de datos Descripción Valor
0 Uint8 Cambio de audio 0 × 07
1 Uint8 Notificar cambio de preferencia 0 × 22
Entre 2 y 3 Uint16 Longitud adicional de los datos 2
4 flags Cómo cambiar las marcas de preferencia varía
Consulta la marca de preferencia de cambio multipunto.
5 Configuración de cambio avanzada
Este byte está reservado; el valor predeterminado debe ser 0
varía

Tabla 4.3.2.2: Preferencia de cambio de notificaciones

Cambiar la fuente de audio activa (al dispositivo conectado)

Los solicitantes de cambio de audio pueden solicitar al proveedor de varios puntos que cambie la fuente de audio activa entre dispositivos conectados con el siguiente mensaje:

Octeto Tipo de datos Descripción Valor
0 Uint8 Cambio de audio 0 × 07
1 Uint8 Cambiar la fuente de audio activa (al dispositivo conectado) 0 × 30
Entre 2 y 3 Uint16 Longitud adicional de los datos 17
4 flags Cómo cambiar marcas de eventos de fuente de audio activas varía
Consulta cómo cambiar un evento de fuente de audio activo
5 a 12 Nonce del mensaje varía
13 - 20 Código de autenticación de mensajes varía

Tabla 4.3.3.0: Cambio de la fuente de audio activa (al dispositivo conectado)

Cambiando evento de fuente de audio activo
  • Bit 0 (MSB): 1 interruptor a este dispositivo, 0 cambio a segundo dispositivo conectado
  • Bit 1: 1 reanuda la reproducción en el cambio a dispositivo después de realizar el cambio, de lo contrario, 0. Si reanudas la reproducción, el proveedor enviará una notificación de PLAY al Seeker mediante el perfil de AVRCP. Si el estado anterior (antes del cambio) no era PLAY, el proveedor debe ignorar esta marca.
  • Bit 2: 1 rechaza el SCO en el dispositivo conectado, de lo contrario, 0
  • Bit 3: 1 desconecta el Bluetooth en el dispositivo que esté alejado de la pantalla, 0 de lo contrario.
  • Bit 4-7: reservados.

Es posible que los Seekers de cambio de audio no siempre conozcan su estado correctamente, por lo que es posible que el proveedor reciba el mensaje "switch to this device" cuando este ya sea el dispositivo activo. En este caso, para mostrar la IU correcta en Seeker, el proveedor puede enviar un NAK con el motivo del error, 0x4 - Acción redundante del dispositivo.

Volver a cambiar (al dispositivo desconectado)

Si el cambio de conexión no es deseado, los usuarios pueden revertir el cambio y, en ciertas situaciones, tiene sentido restablecer la conexión de audio para minimizar la interrupción. El buscador usará el siguiente mensaje para volver a activar el cambio:

Octeto Tipo de datos Descripción Valor
0 Uint8 Cambio de audio 0 × 07
1 Uint8 Volver a cambiar (al dispositivo desconectado) 0 × 31
Entre 2 y 3 Uint16 Longitud adicional de los datos 17
4 Uint8 Cambiar evento varía
0x01: regresar
0x02: volver atrás y reanudar la reproducción
5 a 12 Nonce del mensaje varía
13 - 20 Código de autenticación de mensajes varía

Tabla 4.3.3.1: Regresar (al dispositivo desconectado)

En el caso de los proveedores de varios puntos, para realizar un cambio de conexión, un proveedor puede finalizar la conexión con un dispositivo de origen de audio y pausar la sesión de audio en la otra. Por ejemplo, supongamos que los auriculares de varios puntos están conectados a una tablet y a un tercer dispositivo con interruptor de audio compatible. El usuario mira video en la tablet cuando recibe una llamada entrante en el teléfono. El teléfono activará un interruptor de conexión en los auriculares, que debe desactivar la conexión del tercer dispositivo para conectarse al teléfono, a la vez que pausará la sesión multimedia en la tablet para obtener el tono del teléfono. Si el usuario rechaza la llamada, el teléfono puede pedirle a los auriculares que vuelvan a cambiar y reanuden la reproducción. Cuando se recibe esta solicitud, los auriculares deben volver a conectarse al tercer dispositivo y reanudar la reproducción del video en pausa en la tablet.

Notificar evento de interruptor de varios puntos

Para informar a los usuarios sobre un evento de cambio de varios puntos que tiene lugar, el buscador de cambio de audio puede mostrarles una notificación. El proveedor debe notificar a los buscadores de cambio de audio conectados sobre el evento de cambio.

Octeto Tipo de datos Descripción Valor
0 Uint8 Cambio de audio 0 × 07
1 Uint8 Notificar evento de interruptor de varios puntos
El proveedor debe enviarlo en cada interruptor, incluido el buscador de cambio de audio a uno que no sea de audio. De búsqueda a cambio de audio. De principio a fin,
0 × 32
Entre 2 y 3 Uint16 Longitud adicional de los datos varía
4 Uint8 Motivo del cambio varía
0x00: Sin especificar
0x01: Transmisión A2DP
0x02: HFP
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, se usa el nombre al que envió el buscador; de lo contrario, se usa el nombre de BT, si no corresponde, con los últimos 2 bytes de su dirección.
varía

Tabla 4.3.3.2: Notificar un evento de cambio de varios puntos

Obtener estado de conexión

El buscador puede obtener el estado de conexión actual del proveedor de la siguiente manera:

Octeto Tipo de datos Descripción Valor
0 Uint8 Cambio de audio 0 × 07
1 Uint8 Obtener estado de conexión 0 × 33
Entre 2 y 3 Uint16 Longitud adicional de los datos 0

Tabla 4.3.3.3: Cómo obtener el estado de conexión

Al recibir este mensaje, el proveedor debe responder con el código de mensaje 0x34 y notificar el estado de la conexión.

Notificar el estado de la conexión

Según se define en la carga útil de publicidad de BLE, para proveedores multipunto, si el estado de conexión cambia, a excepción del cambio de paquete de publicidad, el proveedor también debe notificar sobre el cambio a los solicitantes conectados que usan la misma clave de cuenta. Si el proveedor está conectado con uno de estos

Octeto Tipo de datos Descripción Valor
0 Uint8 Cambio de audio 0 × 07
1 Uint8 Notificar el estado de la conexión 0 × 34
Entre 2 y 3 Uint16 Longitud adicional de los datos varía
4 Uint8 Marca de dispositivo activo varía
0x00: este Seeker es pasivo y el dispositivo activo está usando la misma clave de la cuenta
0x01: este Seeker es el dispositivo activo
0x02: este Seeker es pasivo, y el dispositivo activo no es un Audio Switch Seeker.
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 la conexión

Mensaje de estado de conexión encriptado

 encrypted_connection_status = connection_status_raw_data ^ AES(Key, IV)

Donde:

Notificar la conexión iniciada por el cambio de audio

Es posible que los proveedores de cambio de audio necesiten saber si el cambio de conexión se activa mediante el cambio de audio para tener diferentes reacciones, p.ej., inhabilitar los íconos sonoros para los eventos de cambio de audio. El buscador envía un mensaje para notificar al proveedor que esta conexión fue iniciada por un cambio de audio.

Octeto Tipo de datos Descripción Valor
0 Uint8 Cambio de audio 0 × 07
1 Uint8 Notificar la conexión iniciada por el cambio de audio 0 × 40
Entre 2 y 3 Uint16 Longitud adicional de los datos 17
4 Uint8 Indicación de conexión iniciada por el cambio de audio varía
0: Esta conexión no se activó debido al cambio de audio.
1: Esta conexión se inició con el cambio de audio.
5 a 12 Nonce del mensaje varía
13 - 20 Código de autenticación de mensajes varía

Tabla 4.3.4.0: Notificar una conexión iniciada por el cambio de audio

Indicar la clave de cuenta de uso

Si varias claves de cuenta del buscador (p.ej., varios usuarios) están asociadas con el proveedor, este usará el siguiente mensaje para indicar qué clave de cuenta está en uso.

Octeto Tipo de datos Descripción Valor
0 Uint8 Cambio de audio 0 × 07
1 Uint8 Indicar la clave de cuenta de uso 0 × 41
Entre 2 y 3 Uint16 Longitud adicional de los datos 22
4 a 9 UTF8 String en uso UTF8 ("en uso")
10 - 17 Nonce del mensaje varía
18 a 25 Código de autenticación de mensajes varía

Tabla 4.3.4.1: Cómo indicar la clave de cuenta en uso

Cuando recibe este mensaje, el proveedor puede saber qué clave de cuenta está en uso si verifica el código de autenticación de mensajes.

Enviar datos personalizados

El interruptor de audio activo Seeker puede encapsular la información (p.ej., el uso de audio) de la transmisión de audio en un byte de datos personalizado y enviarla al proveedor mediante el siguiente mensaje:

Octeto Tipo de datos Descripción Valor
0 Uint8 Cambio de audio 0 × 07
1 Uint8 Enviar datos personalizados 0 × 42
Entre 2 y 3 Uint16 Longitud adicional de los datos 17
4 Uint8 Datos personalizados varía
5 a 12 Nonce del mensaje varía
13 - 20 Código de autenticación de mensajes varía

Tabla 4.3.4.2: Enviar datos personalizados

Una vez que reciba los datos personalizados, el Proveedor actualizará el paquete de publicidad para incluirlos. En el caso de un proveedor de varios puntos, también debe notificar el cambio de estado de conexión a otro Seeker conectado con la misma clave de cuenta.

Establecer destino de conexión de soltar

En auriculares de varios puntos, si la conexión preferida que se debe desconectar no es la menos usada recientemente, los Seekers del cambio de audio pueden indicarle al proveedor qué dispositivo desconectar mediante el siguiente mensaje:

Octeto Tipo de datos Descripción Valor
0 Uint8 Cambio de audio 0 × 07
1 Uint8 Establecer destino de conexión de soltar 0 × 43
Entre 2 y 3 Uint16 Longitud adicional de los datos 17
4 Uint8 Destino del dispositivo conectado que se soltará varía
1: este dispositivo
5 a 12 Nonce del mensaje varía
13 - 20 Código de autenticación de mensajes varía

Tabla 4.3.4.3: Establece el objetivo de conexión de soltar

Implementación de referencias

Consulta la Biblioteca del SDK incorporado de Nearby para ver la implementación de referencia.