Seleção de áudio

À medida que os usuários utilizam cada vez mais vários dispositivos de fonte de áudio para realizar suas tarefas diárias, há uma demanda crescente por uma solução mais simples para gerenciar fones de ouvido que podem ser usados em vários dispositivos. A seleção de áudio faz a transição perfeita para as conexões dos fones de ouvido entre dispositivos com base na atividade do usuário (por exemplo, assistir a um filme) e priorizadas (por exemplo, uma ligação recebida).

Princípios da UX

  1. A troca de conexão precisa ser rápida e baseada na ação do usuário.
  2. A alternância de conexão deve ser transparente para os usuários, permitindo que eles controlar/reverter caso isso seja indesejável.
  3. A troca de aparelho precisa respeitar a privacidade do usuário.

Papéis

Buscador de alternância de áudio: o buscador é um dispositivo de fonte de áudio (por exemplo, smartphone ou tablet), procurando um fone de ouvido por perto para se conectar, quando aplicável.

Provedor de seleção de áudio: o provedor normalmente é um fone de ouvido que anuncia seu status de presença e conexão para que os buscadores tomem decisões de troca.

Visão geral dos requisitos

Para conseguir a comutação inteligente, os provedores precisam aderir aos seguintes requisitos:

Nome Descrição Requisitos Obrigatório?
Verificação de página Para aceitar uma nova solicitação de conexão de outro buscador quando já houver uma conexão.
Para provedores de ponto único:
  • O dispositivo de origem vai pausar automaticamente a reprodução de áudio quando o provedor for desconectado.
Para provedores multiponto:
  • Se ainda houver uma conexão disponível, ele aceitará a solicitação de conexão.
  • Se a largura de banda da conexão estiver cheia, desconecte a conexão usada menos recentemente (por exemplo, sem evento de áudio por muito tempo) e aceite a nova solicitação recebida.
O modo de verificação da página de baixa latência (o intervalo de verificação não deve ser maior do que 640 ms) é necessário para melhorar o desempenho.
Para escolher entre a duração da bateria e o desempenho da troca, o provedor pode ter um modo de verificação de página padrão na maioria dos casos (modo de baixo consumo de energia, o intervalo de verificação não deve ser maior do que 1.280 ms). No entanto, o modo de baixa latência precisa ser usado nas seguintes situações:
  • Primeiros 30 segundos ao ligar
  • Primeiros 30 segundos sem conexão ou paginação
  • Primeiros 30 segundos de inatividade do dispositivo
Obrigatório
Histórico de conexões Para voltar à conexão anterior e retomar a reprodução, se for o caso.
A mudança será acionada pelas comunicações pelas APIs Message Stream.
O evento de pausa de áudio precisa ser incluído na gravação para retomar a reprodução, se for o caso.
Manter o histórico de conexões e implementar as APIs Message Stream. Obrigatório
Status da conexão Para que os Usuários que procuram a conexão façam a avaliação de troca de conexão.O status da conexão inclui:
  • Estado da conexão
  • Tipo de áudio da conexão ativa
  • Informações da conta da conexão ativa
  • Dispositivos conectados
Incluir o status da conexão na divulgação de BLE e no stream de mensagens. Obrigatório
Mudança nos recursos do ambiente de execução A seleção de áudio pode ser ativada com o upgrade do firmware no provedor. Portanto, os recursos precisam ser sincronizados entre o Seeker e o provedor no tempo de execução. Implemente as APIs Message Stream para acessar recursos de ambiente de execução. Obrigatório
Regras de alternância configuráveis Permita que o Seeker defina a prioridade entre o streaming de áudio ativo atual e as novas solicitações de streaming de áudio usando as configurações de preferência do usuário.
Por exemplo, o Seeker pode fornecer configurações de interface para permitir que os usuários ativem/desativem a alternância automática entre streaming de mídia e chamadas.
A pessoa que busca a troca de áudio vai definir e receber a regra de alternância pelo stream de mensagens.
Somente provedores multiponto.
Implemente APIs de stream de mensagens para configurar as regras de alternância entre dispositivos conectados.
Opcional
Troca de dispositivo ativa Permite que o buscador de seleção de áudio simule a alternância de áudio entre dispositivos conectados.
No lado do buscador de seleção de áudio, pode haver uma interface para que os usuários alternem facilmente entre dispositivos conectados.
Somente provedores multiponto.
Implemente APIs de stream de mensagens para o usuário que busca a troca de áudio a fim de determinar a fonte de áudio ativa entre os dispositivos conectados.
Obrigatório
Notificação de troca multiponto Permita que o buscador de seleção de áudio mostre a notificação de troca de áudio. Somente provedores multiponto.
Implemente APIs de stream de mensagens para notificar os usuários que buscam a troca de áudio conectados quando uma alternância multiponto estiver ocorrendo.
Obrigatório

Payload de publicidade

O Provedor deverá incluir seu status atual da conexão no anúncio, criada com base nos dados da conta com Pareamento rápido descritos em Publicidade: quando não for detectável.

Observe que a versão da tabela 4.2 é 0x1.

Campo de status da conexão

Octeto Tipo de dado Descrição Valor Obrigatório?
0 uint8 Comprimento e tipo do campo
0bLLLLTTTT
  • L = duração do status da conexão em bytes
  • T = tipo
0bLLLL0101
  • comprimento: varia
  • tipo = 0b0101
Obrigatório
1 uint8 Estado da conexão
0bHAFRSSSS
  • H = detecção na cabeça
  • A = disponibilidade da conexão
  • F = modo de foco
  • R = reconectado automaticamente
  • S = estado da conexão
0bHAFRSSSS
Obrigatório
2 uint8 Dados personalizados
Atualmente, ele contém apenas o tipo de conteúdo que é usado para descrever o uso do streaming de áudio atual. O candidato a enviará ao Provedor.
O valor é enviado pelo buscador de streaming ativo atual para o provedor pelo fluxo de mensagens. 0 se a transmissão ativa atual não for do Seeker. Obrigatório
3 – var Bitmap de dispositivos conectados
Um bitmap que mostra quais dispositivos estão conectados ao provedor. Todos os dispositivos vinculados são organizados em ordem, um bit para um dispositivo conectado. O tamanho dependerá de quantos dispositivos vinculados do provedor houver.
O bit mapeado é 1 se o dispositivo estiver conectado ao provedor no momento. Caso contrário, é 0.
Consulte Bitmap de dispositivo conectado para mais detalhes
Opcional

Tabela 4.1:dados brutos do campo de status da conexão

Sinalizações de conexão
  • 0bH = detecção na cabeça

    • 1, em andamento
    • 0, caso contrário, não está na cabeça ou não há sensor OHD
  • 0bA = disponibilidade da conexão

    • 1, há uma conexão disponível
    • 0. Caso contrário,
  • 0bF = modo de foco

    • 1, no modo em foco agora, a troca de conexão não é permitida para mídia uso, por exemplo, sem mudança de A2DP para A2DP
    • 0. Caso contrário,
  • 0bR = reconectado automaticamente

    • 1, se a conexão atual for reconectada automaticamente pelo provedor, ou seja, não está conectado por usuários (para multiponto, se um dos é reconectado automaticamente, ele deve ser definido como 1)
    • 0. Caso contrário,
Estado da conexão
  • 0x0: sem conexão
  • 0 x 1: paginação
  • 0x2: conectado, mas sem transferência de dados
  • 0x3: transferência de dados que não são de áudio (somente quando alternável, se não for, usando 0xF)
  • 0 x 4: streaming A2DP, AVRCP não aplicável
  • 0 x 5: streaming A2DP e reprodução de AVRCP
  • 0 x 6: transmissão HFP (chamada de telefone/voip), incluindo toque em banda e fora dele
  • 0 x 7: LE Audio - streaming de mídia sem controle
  • 0x8: LE Audio — streaming de mídia com controle
  • 0 x 9: LE Audio - streaming de chamadas
  • 0xA: LE Audio - transmissão
  • 0xF: desativar a chave de conexão temporariamente (por exemplo, atualização de firmware)
Tipo de contexto de LE Audio e estado da conexão

Recomendar que o provedor de áudio LE deve lidar com todos os tipos de contexto especificados em Números atribuídos 6.12.3 (a menos que o provedor não ofereça suporte explicitamente a um determinado tipo de contexto) e mapeie o tipo de contexto para o estado da conexão, conforme mostrado abaixo.

  • Conversacional: 0x9
  • Mídia: 0 x 8
  • Jogo: 0 x 7
  • Instrutivo: 0 x 7
  • Assistentes por voz: 0x9
  • Ao vivo: 0x9
  • Efeitos sonoros: 0x2
  • Notificações: 0 x 2
  • Toque: 0x9
  • Alertas: 0 x 7
  • Alarme de emergência: 0x9

Para o tipo de contexto LE Audio misto, como tocar mídia durante o chamada, o Provedor deverá usar o estado da conexão com a maior prioridade, ou seja, usar 0 x 9 (chamada) para o cenário acima em vez de 0 x 8 (mídia).

Bitmap de dispositivo conectado

Para evitar trocas indesejadas de conexão, o buscador pode precisar saber dispositivo(s) em que o fone de ouvido está conectado no momento. Por exemplo, quando o fone de ouvido está conectado ao telefone, o usuário não quer ser interrompido pelo mudança de conexão quando um membro da família inicia o YouTube na tablet.

Como esse bitmap é anônimo, o buscador não consegue saber quais os dispositivos são vinculados ao provedor. Por exemplo, considere cinco dispositivos vinculados:

  • 0: laptop (0bx0000000)
  • 1: telefoneA (0b0x000000)
  • 2: telefoneB (0b00x00000)
  • 3: tablet (0b000x0000)
  • 4: TV (0b0000x000)

Se os dispositivos conectados atuais forem um laptop e um tablet, o valor do atributo bitmap será 0b10010000. A alteração do pedido será aceitável se for inevitável, Por exemplo: Quando os usuários redefinirem o fone de ouvido para a configuração original ou a contagem de dispositivos vinculados atingir o limite máximo.

Anúncio solucionável aleatório

Para evitar o rastreamento e respeitar a privacidade do usuário, o provedor deve alternar e criptografe o campo pela chave de conta usando AES-CTR:

 encrypted_connection_status_field = connection_status_raw_data ^ AES(Key, IV)

onde

  1. A chave é derivada da chave da conta em uso, que é definido na próxima seção.

    • A chave é gerada pela função HKDF, IETF RFC 5869, usando a linguagem SHA-256 função hash.

        Key = HKDF(account_key, NULL, UTF8("SASS-RRD-KEY"),16)
      
    • O provedor deverá usar a chave da conta original aqui, ou seja, o primeiro byte da chave é 0x04, não incluído no padrão de uso.

  2. IV (vetor inicial) é o sal de dois bytes dos dados da chave da conta com zero padding, isto é, IV é concat(sal, ZEROs de 14 bytes).

  3. Os dados brutos de status da conexão estão definidos na tabela 4.1, se o o status de conexão mudar, o sal e o RPA devem ser gerados novamente mesmo período de publicidade.

Isso faz com que o campo de status da conexão criptografada gire ao mesmo tempo que o Os dados da chave da conta são alternados.

A publicidade BLE será estruturada da seguinte forma:

Octeto Tipo de dado Descrição Valor Obrigatório?
0 uint8 Versão e sinalizações 0x10 Obrigatório
1 — t Dados da chave da conta varia Obrigatório
t+1s Dados da bateria varia Opcional
s+1: var Dados que podem ser resolvidos aleatoriamente varia Obrigatório se a lista de chaves da conta não estiver vazia.
Caso contrário,será excluída.

Tabela 4.2:divulgação de BLE com dados que podem ser resolvidos aleatoriamente

Os dados que podem ser resolvidos aleatoriamente contêm:

Octeto Tipo de dado Descrição Valor Obrigatório?
0 uint8 Comprimento e tipo do campo
0bLLLLTTTT
  • L = comprimento dos dados criptografados
  • T = tipo
0bLLLL0110
  • comprimento: varia
  • tipo = 0b0110
Obrigatório
1 – var Dados criptografados varia Obrigatório

Tabela 4.2.1:dados solucionáveis aleatórios

Por exemplo, se os dados de resolução aleatória tiverem uma conexão criptografada. status, o resultado descriptografado será o campo de status da conexão.

Para evitar adulterações, os dados da chave da conta acima devem ser levemente modificados quando esses dados são incluídos no anúncio. Normalmente, quando criar o filtro de chave de conta, um valor V será produzido combinando o valor filtro-chave com um sal. Em vez disso, quando os dados resolvíveis aleatórios também são anunciado, o valor V deve ser construído da seguinte forma:

 V = concat(account_key, salt, random_resolvable_data)

Se os dados da bateria e os dados de resolução aleatória estiverem sendo anunciados, o V deverá ser construído da seguinte forma:

 V = concat(account_key, salt, battery_data, random_resolvable_data)

Chave da conta em uso

A troca de conexão é baseada em conta, portanto, o provedor deve incluir o informações da conta da conexão atual no anúncio BLE. Se o dispositivo conectado atual for um Usuário que busca a troca de áudio, o provedor deve ser capaz para obter a chave da conta associada a esse usuário e usá-la para criptografar o campo de status da conexão. Se a fonte de áudio conectada não for áudio switch Seeker, o provedor deverá usar a chave de conta usada mais recentemente.

Antes de calcular o filtro de chave da conta, o provedor precisa modificar o primeiro das chaves de conta para incluir um dos seguintes padrões de uso:

  1. 0b00000100
    Esta chave de conta não está em uso.
    Esse é o padrão (consulte Chave de conta).
  2. 0b00000101
    Essa é a chave da conta usada mais recentemente.
    O campo de status da conexão é criptografado por esta chave de conta. Não há informações importantes sobre o estado atual da conexão, isso pode significar que não dispositivos conectados ou o dispositivo conectado não é um Buscador de seleção de áudio.
  3. 0b00000110
    Essa chave de conta é a que está em uso.
    O campo de status da conexão é criptografado por essa chave de conta, e a dispositivo conectado está associado a esta chave de conta.

Esquema para o payload de seleção de áudio

A figura abaixo mostra o esquema do payload da troca de áudio.

Mensagens

Quando conectados, o Seeker e o Provedor podem usar o stream de mensagens para sincronizar o áudio do switch, acionar um switch de conexão, configurar e obter a preferência, notificar o status da conexão e assim por diante. Criamos um grupo de mensagens e códigos de mensagem específicos para a seleção de áudio, conforme mostrado abaixo.

Nome do grupo de mensagens Valor
Troca de áudio 0x07

Detalhes adicionais para cada código de mensagem estão incluídos nas seções a seguir.

Nome do código da mensagem Valor Somente multiponto Remetente Participante Encrypt MAC CONF
Usar o recurso Seleção de áudio 0x10 N Ambos Ambos, via código 0x11 N N N
Recurso de notificação da seleção de áudio 0x11 N Ambos Ambos N S S
Definir estado multiponto 0x12 S Pessoas que procuram Provedor N S S
Definir a preferência de troca 0x20 S Pessoas que procuram Provedor N S S
Aumentar as preferências de troca 0x21 S Pessoas que procuram Provedor, via código 0x22 N N N
Notificar sobre preferência de troca 0x22 S Provedor Pessoas que procuram N N N
Trocar a fonte de áudio ativa(para o dispositivo conectado) 0x30 S Pessoas que procuram Provedor N S S
Voltar 0x31 N Pessoas que procuram Provedor N S S
Notificar evento de switch multiponto 0x32 S Provedor Pessoas que procuram N N N
Conferir o status da conexão 0x33 S Pessoas que procuram Provedor, via código 0x34 N N N
Notificar o status da conexão 0x34 S Provedor Pessoas que procuram S N N
Notificar a conexão da seleção de áudio iniciada 0x40 N Pessoas que procuram Provedor N S S
Indicar a chave da conta em uso 0x41 N Pessoas que procuram Provedor N S S
Enviar dados personalizados 0x42 N Pessoas que procuram Provedor N S S
Definir destino da conexão de descarte 0x43 S Pessoas que procuram Provedor N S S

Tabela 4.3:Mensagens de seleção de áudio

MAC das mensagens de seleção de áudio

Para fornecer a autenticação de mensagens, todas as mensagens de seleção de áudio com mensagens os dados enviados do Seeker para o Provedor exigem um Código de autenticação de mensagem. Quando uma mensagem com MAC é recebida, ela deve ser confirmada para que o solicitante saiba se o provedor reagiu ou não à mensagem.

Se a autenticação da mensagem for bem-sucedida, o provedor enviará o ACK para o mensagem:

Octeto Tipo de dados Descrição Valor
0 uint8 Confirmação 0xFF
1 uint8 CONF 0x01
2 a 3 uint16 Tamanho dos dados adicionais varia
4 uint8 Troca de áudio 0x07
5 uint8 Código da mensagem para seleção de áudio varia
6 – s Outros dados varia

Em caso de falha, o Provedor enviará o NAK para a mensagem:

Octeto Tipo de dados Descrição Valor
0 uint8 Confirmação 0xFF
1 uint8 NAK 0x02
2 a 3 uint16 Tamanho dos dados adicionais 0x0003
4 uint8 Motivo do erro varia
5 uint8 Troca de áudio 0x07
6 uint8 Código da mensagem para seleção de áudio varia

Observe que, se o provedor for o remetente, o MAC não será necessário.

Acessar o recurso Seleção de áudio

O provedor de seleção de áudio e o buscador podem verificar se o Pareamento rápido conectado O buscador/provedor oferece suporte à seleção de áudio usando a mensagem abaixo:

Octeto Tipo de dados Descrição Valor
0 uint8 Troca de áudio 0x07
1 uint8 Acessar o recurso Seleção de áudio 0x10
2 a 3 uint16 Tamanho dos dados adicionais 0

Tabela 4.3.1.0:receber capacidade da seleção de áudio

Capacidade de notificação da seleção de áudio

Ao receber o recurso "get" da mensagem para seleção de áudio código, o buscador/provedor de seleção de áudio responderá com uma das seguintes sinalizações:

Octeto Tipo de dados Descrição Valor
0 uint8 Troca de áudio 0x07
1 uint8 Capacidade de notificação da seleção de áudio 0x11
2 a 3 uint16 Tamanho dos dados adicionais 20 se for enviado pelo buscador
4 se for enviado pelo provedor
4 a 5 uint16 Código da versão da seleção de áudio Um valor diferente de zero significa que ele é compatível com a seleção de áudio. O código da versão atual (com a melhoria de segurança) é 0x0102.
0x0000 ou nenhuma resposta em 1 segundo significa que a seleção de áudio não é compatível com este dispositivo
6 a 7 flags Sinalizações de recurso de alternância de áudio do provedor.
Se for enviado pelo Seeker, esses dois bytes precisarão ser ignorados.
varia
Consulte Sinalizações de capacidade de alternância de áudio
8 a 15 Valor de uso único da mensagem
Obrigatório apenas quando enviado pelo Seeker
varia
16 a 23 Código de autenticação de mensagem
Obrigatório apenas quando enviado pelo Seeker
varia

Tabela 4.3.1.1:recurso de notificação da seleção de áudio

Sinalizações do recurso de seleção de áudio
  1. Bit 0 (octeto 6, MSB): estado do interruptor de áudio

    • 1, se o estado da seleção de áudio estiver ativado
    • 0. Caso contrário,
  2. Bit 1: configuração multiponto

    • 1, se o dispositivo for compatível com multiponto e for possível alternar entre ativado e desativado
    • 0, caso contrário (não é compatível com multiponto ou o multiponto está sempre ativado)
  3. Bit 2: estado atual multiponto

    • 1, se o multiponto estiver ativado
    • 0. Caso contrário,
  4. Parte 3: detecção da cabeça

    • 1, se este dispositivo oferecer suporte à detecção na cabeça (mesmo se esse recurso estiver desativado agora)
    • 0. Caso contrário,
  5. Bit 4: estado atual da detecção da cabeça

    • 1, se a detecção da cabeça estiver ativada
    • 0, caso contrário (não é compatível com a detecção a cabeça ou a detecção a cabeça não for compatível desativado)
  6. Todos os outros bits são reservados, o padrão é 0.

Definir estado multiponto

Em pessoas que buscam a seleção de áudio, podemos oferecer a configuração para os usuários ativarem/desativarem a funcionalidade multiponto. O Seeker definirá o estado multiponto como Provedor usando a mensagem abaixo:

Octeto Tipo de dados Descrição Valor
0 uint8 Troca de áudio 0x07
1 uint8 Definir estado multiponto 0x12
2 a 3 uint16 Tamanho dos dados adicionais 17
4 uint8 Estado multiponto 0: desativar o multiponto
1: ativar o multiponto
5 a 12 Valor de uso único da mensagem varia
13 a 20 Código de autenticação de mensagens varia

Tabela 4.3.1.2:definir o estado multiponto

Definir preferência de troca

Os usuários que buscam a seleção de áudio podem modificar a preferência de alternância do modo multiponto e definir ao Provedor usando a mensagem abaixo:

Octeto Tipo de dados Descrição Valor
0 uint8 Troca de áudio 0x07
1 uint8 Definir preferência de troca 0x20
2 a 3 uint16 Tamanho dos dados adicionais 18
4 flags Preferência de alteração varia
Consulte a sinalização de preferência de alternância multiponto
5 Configurações avançadas de mudança
Este byte está reservado. O valor padrão é 0
varia
Ensino fundamental (séries finais)/médio Valor de uso único da mensagem varia
14 a 21 Código de autenticação de mensagens varia

Tabela 4.3.2.0:definir a preferência de troca

Sinalização de preferência de alternância multiponto
  • Bit 0 (MSB): A2DP vs A2DP (padrão 0)
  • Bit 1: HFP x HFP (padrão 0)
  • Bit 2: A2DP x HFP (padrão 0)
  • Bit 3: HFP x A2DP (padrão 1)
  • Parte 4 a 7: reservado
  • Acima representa como "nova solicitação de perfil" x "perfil ativo atual"
    • 0 para não trocar
    • 1 para trocar

Acessar preferência de troca

Os usuários que buscam a troca de áudio podem consultar as preferências de alternância de multiponto no Provedor usando a mensagem abaixo:

Octeto Tipo de dados Descrição Valor
0 uint8 Troca de áudio 0x07
1 uint8 Acessar a configuração de alternância 0x21
2 a 3 uint16 Tamanho dos dados adicionais 0

Tabela 4.3.2.1:entender as preferências de troca

Notificar sobre preferência de troca

Octeto Tipo de dados Descrição Valor
0 uint8 Troca de áudio 0x07
1 uint8 Notificar sobre preferência de troca 0x22
2 a 3 uint16 Tamanho dos dados adicionais 2
4 flags Como alternar sinalizações de preferência varia
Consulte a sinalização de preferência de alternância multiponto
5 Configurações avançadas de mudança
Este byte está reservado. O valor padrão deve ser 0
varia

Tabela 4.3.2.2:notificação de preferência de troca

Trocar a fonte de áudio ativa (para o dispositivo conectado)

Os usuários que buscam a troca de áudio podem solicitar que o provedor multiponto mude o fonte de áudio entre dispositivos conectados usando a mensagem abaixo:

Octeto Tipo de dados Descrição Valor
0 uint8 Troca de áudio 0x07
1 uint8 Trocar a fonte de áudio ativa (para o dispositivo conectado) 0x30
2 a 3 uint16 Tamanho dos dados adicionais 17
4 flags Alternando sinalizações de eventos ativos da fonte de áudio varia
Consulte Como alternar o evento ativo da fonte de áudio
5 a 12 Valor de uso único da mensagem varia
13 a 20 Código de autenticação de mensagens varia

Tabela 4.3.3.0:alternar a fonte de áudio ativa (para o dispositivo conectado)

Alternando o evento da fonte de áudio ativa
  • Bit 0 (MSB): 1 interruptor para este dispositivo, 0 para o segundo dispositivo conectado
  • Bit 1: 1 retoma a reprodução no interruptor para o dispositivo depois da troca. Caso contrário, é 0. Retomar a reprodução significa que o provedor envia uma notificação PLAY ao buscador pelo perfil AVRCP. Se o estado anterior (antes da mudança) não era PLAY, o provedor deve ignorar essa sinalização.
  • Bit 2: 1 rejeita a SCO em um dispositivo desligado, 0 caso contrário
  • Bit 3: 1 desconecta o Bluetooth ao ligar o dispositivo. Caso contrário, é 0.
  • Bit 4 - 7: reservado.

Os usuários que procuram a seleção de áudio nem sempre sabem o próprio estado corretamente. para o provedor receber um "trocar para este dispositivo" quando o candidato é já é o dispositivo ativo. Nesse caso, para mostrar a interface correta no Seeker, O provedor pode enviar um NAK com o motivo do erro, 0 x 4 — ação do dispositivo redundante.

No caso de um provedor de áudio de baixo consumo (LE Audio, na sigla em inglês) que tenha mais de um membro, o provedor precisa: desconecta todos os membros do Seeker; caso contrário, a pilha Bluetooth do O usuário se reconectava ao provedor.

Voltar (para o dispositivo desconectado)

Se a troca de conexão for indesejada, os usuários poderão revertê-la e, em certos casos, faz sentido restaurar a conexão de áudio para minimizar interrupção. O Seeker usará a mensagem abaixo para acionar a alternância de volta:

Octeto Tipo de dados Descrição Valor
0 uint8 Troca de áudio 0x07
1 uint8 Voltar (para o dispositivo desconectado) 0x31
2 a 3 uint16 Tamanho dos dados adicionais 17
4 uint8 Alternar evento varia
0x01: volte
0x02: volte e retome a reprodução
5 a 12 Valor de uso único da mensagem varia
13 a 20 Código de autenticação de mensagens varia

Tabela 4.3.3.1:voltar para o dispositivo desconectado

Para provedores multiponto, para realizar uma troca de conexão, o provedor pode descartar a conexão com um dispositivo de fonte de áudio e pausar a sessão de áudio no outro fonte de áudio. Por exemplo, suponha que o fone de ouvido multiponto esteja conectado a um tablet e um terceiro dispositivo compatível para seleção de áudio. O usuário está assistindo a um vídeo em no tablet quando há uma chamada recebida no celular. O smartphone será acionado um interruptor de conexão no fone de ouvido, que precisa encaixar o terceiro dispositivo para conectar ao telefone e, ao mesmo tempo, pausar a mídia no tablet para receber o toque do telefone. Se o usuário recusar durante a chamada, o telefone pode pedir que o fone de ouvido "volte e retome a reprodução". Ao receber essa solicitação, o fone de ouvido precisa se reconectar ao terceiro dispositivo. retomar a reprodução do vídeo pausado no tablet.

Notificar evento de switch multiponto

Para informar os usuários sobre um evento de switch multiponto, a seleção de áudio A pessoa pode mostrar uma notificação aos usuários. O provedor deve notificar os usuários conectados Pessoas que procuram a seleção de áudio sobre o evento de alternância de áudio.

Octeto Tipo de dados Descrição Valor
0 uint8 Troca de áudio 0x07
1 uint8 Notificar evento de alternância de vários pontos
O provedor precisa enviá-lo em todos os interruptores, incluindo o buscador de mudança de áudio para o buscador de mudança de áudio, o buscador de mudança de áudio para o buscador de mudança de áudio e o buscador de mudança de áudio para o buscador de mudança de áudio.
0x32
2 a 3 uint16 Tamanho dos dados adicionais varia
4 uint8 Motivo da troca
Esse valor precisa ser determinado com base no Estado da conexão. Para casos de uso de LE Audio, analisar o mapeamento entre Tipo de contexto de LE Audio e o estado da conexão pode ser útil. Por exemplo, o estado da conexão correspondente aos assistentes de voz é 0x9(LE audio - streaming de chamadas). Portanto, o motivo da mudança iniciada pelo Assistente por voz precisa ser 0x02.
varia
0x00: não especificado
0x01: mídia (por exemplo, streaming A2DP, streaming de mídia LEA)
0x02: chamada (por exemplo, streaming HFP, streaming de chamadas LEA)
5 uint8 Dispositivo de destino varia
0x01: este dispositivo
0x02: outro dispositivo conectado
6 – n utf8 Nome do dispositivo de destino
se o dispositivo de destino for Buscador de seleção de áudio, usando o nome para o qual o usuário foi enviado. Caso contrário, usará o nome do BT, se não aplicável, usando os últimos 2 bytes do endereço.
varia

Tabela 4.3.3.2:notificar evento de switch multiponto

Conferir o status da conexão

O buscador pode obter o status atual da conexão do provedor:

Octeto Tipo de dados Descrição Valor
0 uint8 Troca de áudio 0x07
1 uint8 Conferir o status da conexão 0x33
2 a 3 uint16 Tamanho dos dados adicionais 0

Tabela 4.3.3.3:conferir o status da conexão

Ao receber esta mensagem, o Provedor responderá usando o código da mensagem 0x34, notificar o status da conexão.

Notificar o status da conexão

Conforme definido no payload de publicidade de BLE, para provedores multiponto, se o status da conexão mudar, exceto para alteração pacote de publicidade, o Provedor também deverá notificar os Seekers conectados que estão usando a mesma chave de conta sobre a mudança. Se o provedor estiver conectado com um buscador de seleção de áudio e um buscador de seleção sem áudio, se o switch está ativo, o provedor também deve notificar o usuário alternar Seeker sobre o status da conexão (usando a chave de conta do Seeker).

Octeto Tipo de dados Descrição Valor
0 uint8 Troca de áudio 0x07
1 uint8 Notificar o status da conexão 0x34
2 a 3 uint16 Tamanho dos dados adicionais varia
4 uint8 Sinalização de dispositivo ativo varia
0x00: este Seeker é passivo, e o dispositivo ativo está usando a mesma chave de conta
0x01: ele é o dispositivo ativo
0x02: o Seeker é passivo, e o dispositivo ativo não é um buscador de interruptor de áudio.
5 – n Status da conexão criptografada varia
n+1 - n+8 Valor de uso único da mensagem varia

Tabela 4.3.3.4:notificar o status da conexão

Mensagem de status da conexão criptografada

 encrypted_connection_status = connection_status_raw_data ^ AES(Key, IV)

em que:

Notificar a conexão da seleção de áudio iniciada

Os provedores de seleção de áudio podem precisar saber se a alternância de conexão é acionada por seleção de áudio para ter reações diferentes, por exemplo, desativar ícones auditivos para áudio eventos de alternância. O Seeker envia uma mensagem para notificar o Provedor de que este foi uma conexão iniciada pela seleção de áudio.

Octeto Tipo de dados Descrição Valor
0 uint8 Troca de áudio 0x07
1 uint8 Notificar a conexão da seleção de áudio iniciada 0x40
2 a 3 uint16 Tamanho dos dados adicionais 17
4 uint8 Indicação de conexão iniciada pela seleção de áudio varia
0: essa conexão não foi acionada pela seleção de áudio
1: essa conexão foi iniciada pela seleção de áudio
5 a 12 Valor de uso único da mensagem varia
13 a 20 Código de autenticação de mensagens varia

Tabela 4.3.4.0:notificação de conexão iniciada pela seleção de áudio

Indicar a chave da conta em uso

Se várias chaves de conta no Seeker (por exemplo, múltiplos usuários) estiverem associadas a o provedor, o buscador usará a mensagem abaixo para indicar qual conta está em uso.

Octeto Tipo de dados Descrição Valor
0 uint8 Troca de áudio 0x07
1 uint8 Indicar a chave da conta em uso 0x41
2 a 3 uint16 Tamanho dos dados adicionais 22
4 a 9 utf8 String em uso UTF8 ("em uso")
10 a 17 Valor de uso único da mensagem varia
18 a 25 Código de autenticação de mensagens varia

Tabela 4.3.4.1:indicar a chave da conta em uso

Ao receber essa mensagem, o provedor pode saber qual chave de conta está em uso verificando o código de autenticação da mensagem.

Enviar dados personalizados

O Buscador de seleção de áudio ativo pode encapsular as informações (por exemplo, uso) de stream de áudio em byte de dados personalizado e enviá-lo ao provedor usando esta mensagem:

Octeto Tipo de dados Descrição Valor
0 uint8 Troca de áudio 0x07
1 uint8 Enviar dados personalizados 0x42
2 a 3 uint16 Tamanho dos dados adicionais 17
4 uint8 Dados personalizados varia
5 a 12 Valor de uso único da mensagem varia
13 a 20 Código de autenticação de mensagens varia

Tabela 4.3.4.2:enviar dados personalizados

Ao receber os dados personalizados, o Provedor atualizará o pacote de publicidade para incluir os dados personalizados. Para um provedor multiponto, ele também deve notificar o mudança do status da conexão para outro Seeker conectado usando a mesma chave de conta.

Definir destino da conexão de descarte

Em fones de ouvido multiponto, se a conexão preferida para ser eliminada não for a usado pela menos recentemente, os usuários que procuram a seleção de áudio podem informar ao provedor qual dispositivo usando a mensagem abaixo:

Octeto Tipo de dados Descrição Valor
0 uint8 Troca de áudio 0x07
1 uint8 Definir destino da conexão de descarte 0x43
2 a 3 uint16 Tamanho dos dados adicionais 17
4 uint8 Dispositivo conectado de destino a ser descartado varia
1: este dispositivo
5 a 12 Valor de uso único da mensagem varia
13 a 20 Código de autenticação de mensagens varia

Tabela 4.3.4.3:definir destino da conexão de descarte

Implementação de referência

Consulte a biblioteca de SDKs incorporados por perto para conferir a implementação de referência.