Seleção de áudio

À medida que os usuários utilizam cada vez mais dispositivos de fontes de áudio para realizar tarefas diárias, há uma demanda crescente por uma solução mais simples para gerenciar o uso de fones de ouvido em vários dispositivos. A alternância de áudio transita perfeitamente para as conexões de fones de ouvido entre dispositivos com base na atividade do usuário (por exemplo, iniciar um filme) e em eventos priorizados (por exemplo, uma chamada recebida).

Princípios da UX

  1. A troca de conexão deve ser rápida e baseada na ação do usuário.
  2. A troca de conexão precisa ser transparente para os usuários, permitindo que eles controlem/revertam se a alternância não for desejável.
  3. A mudança precisa respeitar a privacidade do usuário.

Papéis

Buscador de interruptores de áudio: o buscador é um dispositivo de fonte de áudio (por exemplo, um smartphone ou tablet) que procura 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 a presença e o status da conexão para que os usuários tomem decisões de alternância.

Visão geral dos requisitos

Para alcançar a alternância inteligente, os Provedores precisam atender 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 houver uma conexão.
Para provedores de ponto único:
  • O dispositivo de origem original pausa automaticamente a reprodução de áudio quando o provedor está se desconectando.
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 mais recentemente (por exemplo, nenhum evento de áudio por muito tempo) e aceite a nova solicitação recebida.
Para melhorar o desempenho, é necessário ter um modo de leitura de página de baixa latência (o intervalo de verificação não pode ser maior que 640 ms).
Para fazer um equilíbrio 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 busca não pode ser maior que 1.280 ms). No entanto, o modo de baixa latência precisa ser usado nas seguintes situações:
  • Primeiros 30 segundos de energia ligado
  • 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 aplicável.
O retorno vai ser acionado pela comunicação via APIs Message Stream.
O evento de pausa de áudio precisa ser incluído na gravação para retomar a reprodução, se aplicável.
Manter o histórico de conexões e implementar APIs de fluxo de mensagens. Obrigatório
Status da conexão Os usuários podem decidir se querem mudar de conexão.O status da conexão inclui:
  • Estado de 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 publicidade de BLE e no fluxo de mensagens. Obrigatório
Mudança dos 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 buscador e o provedor no momento da execução. Implemente as APIs Message Stream para acessar os recursos do 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 por meio das configurações de preferência do usuário.
Por exemplo, o Buscador da seleção de áudio pode fornecer configurações de IU para permitir que os usuários ativem/desativem a alternância automática entre streaming de mídia e chamadas.O buscador de seleção de áudio do
vai definir e receber a regra de troca pelo streaming de mensagens.
Somente provedores multiponto.
Implemente as APIs de fluxo de mensagens para configurar regras de alternância entre dispositivos conectados.
Opcional
Troca de dispositivo ativa Permita que o Buscador de áudio simule a alternância de áudio entre dispositivos conectados.
No lado do Buscador de áudio, pode haver uma IU para que os usuários alternem facilmente entre os dispositivos conectados.
Somente provedores multiponto.
Implemente as APIs de stream de mensagens do buscador de alternância de áudio para determinar a fonte de áudio ativa entre os dispositivos conectados.
Obrigatório
Notificação de alternância de vários pontos Permita que o buscador do seletor de áudio mostre a notificação de alternância. Somente provedores multiponto.
Implemente as APIs de streaming de mensagens para notificar os usuários da troca de áudio conectados quando ocorrer uma alternância de vários pontos.
Obrigatório

Payload de publicidade

O Provedor precisa incluir o status de conexão atual no anúncio, baseado nos dados da Conta de Pareamento rápido descritos em Publicidade: quando não detectável.

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

Campo de status da conexão

Octeto Tipo de dados Descrição Valor Obrigatório?
0 uint8 Comprimento e tipo de campo
0bLLLLTTTT
  • L = tamanho do status da conexão em bytes
  • T = tipo
0bLLLL0101
  • comprimento: varia
  • tipo = 0b0101
Obrigatório
1 uint8 Estado da conexão
0bHAFRSSSS
  • H = na detecção da cabeça
  • A = disponibilidade de conexão
  • F = modo de foco
  • R = reconectado automaticamente
  • S = estado da conexão
0bHAFRSSSS
Obrigatório
2 uint8 Dados personalizados
No momento, ele só contém o tipo de conteúdo que é usado para descrever o uso do streaming de áudio atual. O buscador o enviará ao provedor.
O valor é enviado do buscador do streaming ativo atual ao provedor por meio de fluxo de mensagens. É 0 se o streaming ativo atual não for do buscador. Obrigatório
3: var Bitmap de dispositivos conectados
Um bitmap para mostrar quais dispositivos estão conectados ao provedor no momento. Todos os dispositivos vinculados são organizados em ordem, um bit para um dispositivo vinculado. O comprimento depende de quantos dispositivos vinculados do provedor existem.
O bit mapeado definido como 1 se o dispositivo estiver conectado ao provedor no momento. Caso contrário, será 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, na cabeça agora
    • 0, caso contrário, não está na cabeça ou não há sensor OHD
  • 0bA = disponibilidade de conexão

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

    • 1, no modo focado agora, a alternância de conexão não é permitida para uso de mídia, ou seja, não é permitido alternar A2DP para A2DP
    • 0, caso contrário
  • 0bR = reconectado automaticamente

    • 1, se a conexão atual for reconectada automaticamente pelo provedor, o que significa que não está conectada pelos usuários (para vários pontos, se uma das conexões existentes for reconectada automaticamente, defina como 1)
    • 0, caso contrário
Estado de conexão
  • 0 x 0: sem conexão
  • 0x1: paginação
  • 0x2: conectado, mas sem transferência de dados
  • 0x3: transferência de dados que não é de áudio (apenas quando alternável, se não for, usando 0xF)
  • 0 x 4: streaming A2DP, AVRCP não aplicável
  • 0x5: streaming A2DP e AVRCP em reprodução
  • 0 x 6: streaming HFP (chamadas de telefone/voip), incluindo toques internos e sem banda
  • 0x7: áudio de baixa energia - streaming de mídia sem controle
  • 0x8: áudio de baixa energia - streaming de mídia com controle
  • 0 x 9: áudio de baixa energia - streaming de chamadas
  • 0xA: áudio de baixa energia - transmissão
  • 0xF: desativar a chave da conexão temporariamente (por exemplo, atualização de firmware)
Bitmap de dispositivo conectado

Para evitar alternância de conexão indesejada, o usuário pode precisar saber a quais dispositivos o fone de ouvido está conectado no momento. Por exemplo, quando o fone de ouvido estiver conectado ao smartphone, o usuário não quer ser interrompido pela alternância de conexão quando um membro da família iniciar o YouTube no tablet.

Esse bitmap é anônimo. O buscador não consegue saber quais outros dispositivos estão vinculados ao provedor. Por exemplo, vamos considerar 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 bitmap será 0b10010000. A mudança no 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 quando 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 precisa alternar e criptografar o campo pela chave de conta usando o AES-CTR:

 encrypted_connection_status_field = connection_status_raw_data ^ AES(Key, IV)

onde

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

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

        Key = HKDF(account_key, NULL, UTF8("SASS-RRD-KEY"),16)
      
    • O provedor usará a chave de 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 2 bytes dos dados da chave da conta sem padding, ou seja, IV é concat(sal, ZERO de 14 bytes).

  3. Os dados brutos do status da conexão são definidos na tabela 4.1. Se o status da conexão mudar, o sal e o RPA precisarão ser gerados novamente no mesmo período de publicidade.

Isso faz com que o campo de status da conexão criptografada seja alternado ao mesmo tempo que os dados da chave da conta.

O anúncio BLE será estruturado da seguinte maneira:

Octeto Tipo de dados 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+1: s Dados da bateria varia Opcional
s+1: var Dados aleatórios solucionáveis 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 solucionáveis aleatórios

Dados solucionáveis aleatórios contêm:

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

Tabela 4.2.1:dados aleatórios solucionáveis

Por exemplo, se os dados aleatórios solucionáveis contiverem um campo de status de conexão criptografado, o resultado descriptografado será o campo de status da conexão.

Para evitar adulterações, os dados importantes da conta acima precisam ser ligeiramente modificados quando os dados aleatórios para solução de problemas estiverem incluídos na publicidade. Normalmente, ao criar o filtro de chave de conta, um valor V é produzido combinando o filtro de chave de conta com um sal. Em vez disso, quando o Random Resolvable Data também estiver sendo anunciado, o valor V precisará ser criado como:

 V = concat(account_key, salt, random_resolvable_data)

Se os dados da bateria e os dados de resolução aleatória estão sendo anunciados, o V precisa ser criado como:

 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 precisa incluir as informações da conta da conexão atual na divulgação BLE. Se o dispositivo conectado atual for um buscador de switch de áudio, o provedor pode acessar a chave de conta associada a esse buscador e usá-la para criptografar o campo de status da conexão. Se a fonte de áudio conectada não for a busca de interruptores de áudio, o provedor vai precisar usar a chave de conta usada mais recentemente.

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

  1. 0b00000100
    Esta chave de conta não está em uso.
    Esse é o padrão (consulte Chave da conta).
  2. 0b00000101
    Essa chave de conta é a 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 da conexão atual. Isso pode significar que não há dispositivos conectados ou que o dispositivo conectado não é um buscador de switch de áudio.
  3. 0b00000110
    Essa chave de conta é a chave da conta em uso.
    O campo de status da conexão é criptografado por essa chave de conta, e o dispositivo conectado atual está associado a ela.

Esquema para o payload de switch de áudio

A figura abaixo mostra o esquema do payload de seleção de áudio.

Mensagens

Quando conectados, o buscador e o provedor podem usar o stream de mensagens para sincronizar o recurso de switch de áudio, acionar uma troca de conexão, definir e receber a preferência de chave, notificar o status da conexão e assim por diante. Como mostrado abaixo, criamos um grupo de mensagens e códigos de mensagem específicos para a seleção de áudio.

Nome do grupo de mensagens Valor
Seleção de áudio 0x07

Confira mais detalhes de cada código de mensagem nas seções a seguir.

Nome do código da mensagem Valor Somente multiponto Remetente Responsável pelo atendimento Encrypt MAC CONF
Ative a opção "Seleção de áudio" 0x10 N Ambos Ambos, pelo código 0x11 N N N
Capacidade de notificar sobre a seleção de áudio 0x11 N Ambos Ambos N S S
Definir estado multiponto 0x12 S Buscador Provedor N S S
Definir preferências de troca 0x20 S Buscador Provedor N S S
Definir preferências de migração 0x21 S Buscador Provedor, pelo código 0x22 N N N
Notificar preferência de mudança 0x22 S Provedor Buscador N N N
Alternar a fonte de áudio ativa(para o dispositivo conectado) 0x30 S Buscador Provedor N S S
Voltar (para o dispositivo desconectado) 0x31 N Buscador Provedor N S S
Notificar evento de alternância de vários pontos 0x32 S Provedor Buscador N N N
Ver o status da conexão 0x33 S Buscador Provedor, pelo código 0x34 N N N
Notificar o status da conexão 0x34 S Provedor Buscador S N N
Notificar a conexão iniciada com interruptor de áudio 0x40 N Buscador Provedor N S S
Indicar a chave da conta em uso 0x41 N Buscador Provedor N S S
Enviar dados personalizados 0x42 N Buscador Provedor N S S
Definir destino da conexão de queda 0x43 S Buscador Provedor N S S

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

MAC das mensagens do switch de áudio

Para fornecer a autenticação de mensagens, todas as mensagens de switch de áudio com dados adicionais enviados do buscador ao provedor exigem um código de autenticação de mensagem. Quando uma mensagem com MAC é recebida, ela precisa ser confirmada para que o buscador saiba se o provedor reagiu ou não à mensagem.

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

Octeto Tipo de dados Descrição Valor
0 Uint8 Confirmação 0xFF
1 Uint8 CONF 0x01
2 a 3 uint16 Comprimento de dados adicional varia
4 Uint8 Seleção de áudio 0x07
5 Uint8 Código da mensagem para troca de áudio varia
6 - s Dados adicionais varia

Se falhar, o provedor enviará o NAK da mensagem:

Octeto Tipo de dados Descrição Valor
0 Uint8 Confirmação 0xFF
1 Uint8 N/A 0x02
2 a 3 uint16 Comprimento de dados adicional 0x0003
4 Uint8 Motivo do erro varia
5 Uint8 Seleção de áudio 0x07
6 Uint8 Código da mensagem para troca de áudio varia

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

Usar o recurso de seleção de áudio

O provedor da seleção de áudio e o buscador podem conferir se o busca/provedor de pareamento rápido conectado ou não é compatível com a seleção de áudio usando a mensagem abaixo:

Octeto Tipo de dados Descrição Valor
0 Uint8 Seleção de áudio 0x07
1 Uint8 Usar o recurso de seleção de áudio 0x10
2 a 3 uint16 Comprimento de dados adicional 0

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

Notificar a capacidade da chave "Áudio"

Ao receber o código de mensagem da mensagem Receber capacidade da alternância de áudio, o buscador/provedor da opção de áudio vai responder com uma das seguintes flags:

Octeto Tipo de dados Descrição Valor
0 Uint8 Seleção de áudio 0x07
1 Uint8 Notificar a capacidade da chave "Áudio" 0x11
2 a 3 uint16 Comprimento de dados adicional 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 aprimoramento de segurança) é 0x0102.
0 x 0.000 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 do recurso de alternância de áudio do provedor
Se for enviado pelo buscador, esses dois bytes deverão ser ignorados.
varia
Consulte Sinalizações do recurso de seleção de áudio.
8 a 15 Valor de uso único da mensagem
Obrigatório apenas quando enviado pelo buscador
varia
16 a 23 Código de autenticação da mensagem
Obrigatório apenas quando esta mensagem é enviada pelo buscador
varia

Tabela 4.3.1.1:capacidade de notificar sobre a chave de áudio

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

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

    • 1, se o dispositivo for compatível com vários pontos e puder ser alternado entre ativado e desativado
    • 0, caso contrário (não é compatível com multiponto ou multiponto fica sempre ativado)
  3. Bit 2: estado atual multiponto

    • 1, se o multiponto estiver ativado
    • 0, caso contrário
  4. Bit 3: detecção na cabeça

    • 1, se este dispositivo oferecer suporte à detecção na cabeça (mesmo que ela esteja desativada agora)
    • 0, caso contrário
  5. Bit 4: estado atual da detecção na cabeça

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

Definir estado multiponto

Em quem procura a seleção de áudio, podemos oferecer aos usuários a opção de ativar/desativar a funcionalidade multiponto. O buscador definirá o estado multiponto para o provedor usando a mensagem abaixo:

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

Tabela 4.3.1.2:definir o estado multiponto

Definir preferência de troca

Os buscadores de switch de áudio podem modificar a preferência de alternância de multiponto e defini-la para o provedor usando a mensagem abaixo:

Octeto Tipo de dados Descrição Valor
0 Uint8 Seleção de áudio 0x07
1 Uint8 Definir preferência de mudança 0x20
2 a 3 uint16 Comprimento de dados adicional 18
4 flags Preferência de alternância varia
Consulte sinalização de preferência de alternância de multiponto
5 Configurações avançadas de alternância
Este byte está reservado. O valor padrão é 0
varia
6 a 13 Valor de uso único da mensagem varia
14 a 21 Código de autenticação de mensagem varia

Tabela 4.3.2.0:definir as preferências de mudança

Sinalização de preferência de alternância de vários pontos
  • Bit 0 (MSB): A2DP x 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)
  • Bit 4 - 7: reservado
  • Acima representa "nova solicitação de perfil" x "perfil ativo atual"
    • 0 para não alternar
    • 1 para switch

Acessar preferências de mudança

Os buscadores de alternância de áudio podem consultar a preferência de alternância do multiponto do provedor usando a mensagem abaixo:

Octeto Tipo de dados Descrição Valor
0 Uint8 Seleção de áudio 0x07
1 Uint8 Acessar a configuração da mudança 0x21
2 a 3 uint16 Comprimento de dados adicional 0

Tabela 4.3.2.1:conferir as preferências de mudança

Notificar a preferência de mudança

Octeto Tipo de dados Descrição Valor
0 Uint8 Seleção de áudio 0x07
1 Uint8 Notificar a preferência de mudança 0x22
2 a 3 uint16 Comprimento de dados adicional 2
4 flags Como alternar sinalizações de preferência varia
Consulte sinalização de preferência de alternância de multiponto
5 Configurações avançadas de alternância
Este byte está reservado. O valor padrão precisa ser 0
varia

Tabela 4.3.2.2:notificar a preferência de mudança

Alternar fonte de áudio ativa (para o dispositivo conectado)

Os interessados em switch de áudio podem solicitar que o provedor de vários pontos alterne a fonte de áudio ativa entre dispositivos conectados usando a mensagem abaixo:

Octeto Tipo de dados Descrição Valor
0 Uint8 Seleção de áudio 0x07
1 Uint8 Alternar fonte de áudio ativa (para o dispositivo conectado) 0x30
2 a 3 uint16 Comprimento de dados adicional 17
4 flags Como alternar sinalizações de evento de fonte de áudio ativas varia
Consulte como alternar o evento da fonte de áudio ativa
5 a 12 Valor de uso único da mensagem varia
13 a 20 Código de autenticação de mensagem varia

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

Alternando evento da fonte de áudio ativa
  • Bit 0 (MSB): 1 interruptor para este dispositivo, 0 interruptor para o segundo dispositivo conectado
  • Bit 1: 1 retomar a reprodução na chave para o dispositivo após a troca, caso contrário, 0. Retomar a reprodução significa que o provedor envia uma notificação PLAY para o usuário que está procurando o perfil AVRCP. Se o estado anterior (antes da mudança) não era PLAY, o provedor precisa ignorar essa sinalização.
  • Bit 2: 1 rejeita SCO no dispositivo desligado. Caso contrário, 0
  • Bit 3: 1 desconecta o Bluetooth no dispositivo com interruptor, caso contrário, 0.
  • Bit 4 - 7: reservado.

Os usuários que buscam a seleção de áudio nem sempre sabem o estado corretamente. Por isso, é possível que o provedor receba uma mensagem "mudar para este dispositivo" quando o buscador já é o dispositivo ativo. Nesse caso, para mostrar a IU correta no Seeker, o provedor pode enviar um NAK com o motivo do erro, 0x4: ação redundante do dispositivo.

Voltar (para o dispositivo desconectado)

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

Octeto Tipo de dados Descrição Valor
0 Uint8 Seleção de áudio 0x07
1 Uint8 Voltar (para o dispositivo desconectado) 0x31
2 a 3 uint16 Comprimento de dados adicional 17
4 Uint8 Voltar evento varia
0x01: voltar
0x02: voltar e retomar a reprodução
5 a 12 Valor de uso único da mensagem varia
13 a 20 Código de autenticação de mensagem varia

Tabela 4.3.3.1:voltar (para o dispositivo desconectado)

Para provedores de vários pontos, para mudar a conexão, um provedor pode descartar a conexão com um dispositivo de origem de áudio e pausar a sessão na outra fonte de áudio. Por exemplo, suponha que o fone de ouvido multiponto esteja conectado a um tablet e um terceiro dispositivo de switch de áudio compatível. O usuário está assistindo a um vídeo no tablet quando recebe uma chamada no celular. O smartphone vai acionar um interruptor de conexão no fone de ouvido, que precisa interromper a conexão do terceiro dispositivo para se conectar a ele. Ao mesmo tempo, pausa a sessão de mídia no tablet para receber o toque do smartphone. Se o usuário recusar a chamada, o smartphone poderá pedir ao fone de ouvido para "voltar e retomar a reprodução". Ao receber essa solicitação, o fone de ouvido precisa se reconectar ao terceiro dispositivo e retomar a reprodução do vídeo pausado no tablet.

Notificar evento de alternância de vários pontos

Para informar os usuários sobre um evento de alternância de vários pontos, o Buscador de seleção de áudio pode mostrar uma notificação aos usuários. O provedor precisa notificar os verificadores de switch de áudio conectados sobre o evento de alternância.

Octeto Tipo de dados Descrição Valor
0 Uint8 Seleção de áudio 0x07
1 Uint8 Notificar o evento de alternância de vários pontos
O provedor precisa enviá-lo em cada switch, incluindo o Buscador de interruptor de áudio para Buscador sem seleção de áudio, Buscador de interruptor não áudio para Buscador de interruptor de áudio e Buscador de interruptor de áudio para Buscador de interruptor de áudio
0x32
2 a 3 uint16 Comprimento de dados adicional varia
4 Uint8 Motivo da troca varia
0 x 00: não especificado
0 x 01: streaming de A2DP
0 x 02: HFP
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 switch de áudio", usando o nome ao qual o pesquisador enviou. Caso contrário, use o nome do BT, se não for o caso, usando os últimos 2 bytes do endereço
varia

Tabela 4.3.3.2:notificar evento multipoint-switch

Ver status da conexão

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

Octeto Tipo de dados Descrição Valor
0 Uint8 Seleção de áudio 0x07
1 Uint8 Ver status da conexão 0x33
2 a 3 uint16 Comprimento de dados adicional 0

Tabela 4.3.3.3:conferir o status da conexão

Ao receber essa mensagem, o provedor precisa responder com o código de mensagem 0x34 e notificar o status da conexão.

Notificar o status da conexão

Conforme definido no payload de publicidade do BLE para provedores multiponto, se o status da conexão mudar, exceto para alterar o pacote de publicidade, o provedor também precisará notificar sobre a mudança os Buscadores conectados que estão usando a mesma chave de conta. Se o provedor estiver conectado a um Buscador de interruptores de áudio e um Buscador de interruptor sem áudio, se o Buscador de interruptores sem áudio estiver ativo, o provedor também precisará notificar o Buscador do interruptor de áudio conectado sobre o status da conexão (usando a chave da conta do buscador).

Octeto Tipo de dados Descrição Valor
0 Uint8 Seleção de áudio 0x07
1 Uint8 Notificar o status da conexão 0x34
2 a 3 uint16 Comprimento de dados adicional varia
4 Uint8 Sinalização de dispositivo ativo varia
0 x 00: este Buscador é passivo, e o dispositivo ativo está usando a mesma chave de conta
0 x 01. Esse Buscador é o dispositivo ativo
0 x 02: este Buscador é passivo, e o dispositivo ativo é Buscador de interruptor sem á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 de conexão criptografada

 encrypted_connection_status = connection_status_raw_data ^ AES(Key, IV)

onde:

Notificar a conexão iniciada com interruptor de áudio

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

Octeto Tipo de dados Descrição Valor
0 Uint8 Seleção de áudio 0x07
1 Uint8 Notificar a conexão iniciada com interruptor de áudio 0x40
2 a 3 uint16 Comprimento de dados adicional 17
4 Uint8 Indicação de conexão iniciada pela seleção de áudio varia
0: esta conexão não foi acionada pela seleção de áudio
1: essa conexão foi iniciada com a troca de áudio
5 a 12 Valor de uso único da mensagem varia
13 a 20 Código de autenticação de mensagem varia

Tabela 4.3.4.0:notificar a conexão iniciada da chave de áudio

Indicar chave da conta em uso

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

Octeto Tipo de dados Descrição Valor
0 Uint8 Seleção de áudio 0x07
1 Uint8 Indicar chave da conta em uso 0x41
2 a 3 uint16 Comprimento de dados adicional 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 mensagem 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 switch de áudio ativo pode encapsular as informações (por exemplo, uso de áudio) do stream de áudio no byte de dados personalizado e enviá-las ao provedor usando a mensagem abaixo:

Octeto Tipo de dados Descrição Valor
0 Uint8 Seleção de áudio 0x07
1 Uint8 Enviar dados personalizados 0x42
2 a 3 uint16 Comprimento de dados adicional 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 mensagem varia

Tabela 4.3.4.2:enviar dados personalizados

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

Definir destino da conexão de queda

Em fones de ouvido multiponto, se a conexão preferencial a ser descartada não for a usada mais recentemente, os buscadores da seleção de áudio poderão informar ao provedor qual dispositivo deixar usando a mensagem abaixo:

Octeto Tipo de dados Descrição Valor
0 Uint8 Seleção de áudio 0x07
1 Uint8 Definir destino da conexão de queda 0x43
2 a 3 uint16 Comprimento de dados adicional 17
4 Uint8 Dispositivo conectado de destino para 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 mensagem varia

Tabela 4.3.4.3:definir o destino da conexão de soltar

Implementação de referência

Consulte a biblioteca de SDK incorporado do Nearby para ver a implementação de referência.