Compartilhar via


Perguntas frequentes sobre o desenvolvedor bluetooth

Este artigo contém respostas para perguntas frequentes sobre a API Bluetooth UWP.

Quais APIs eu uso? Bluetooth Clássico (RFCOMM) ou Gatt (Bluetooth Low Energy)?

Há várias discussões online em torno deste tópico geral, então vamos manter essa resposta diretamente sobre a diferença em relação ao Windows. Aqui estão algumas diretrizes gerais:

Bluetooth LE (Windows.Devices.Bluetooth.GenericAttributeProfile)

Use as APIs gatt quando você estiver se comunicando com um dispositivo que dá suporte a Bluetooth Low Energy. Se o caso de uso for pouco frequente, de baixa largura de banda ou exigir baixa potência, Bluetooth Low Energy será a resposta. O namespace principal que inclui essa funcionalidade é Windows.Devices.Bluetooth.GenericAttributeProfile.

Quando não usar o Bluetooth LE

  • Cenários de alta largura de banda e alta frequência. Se você precisar manter constantemente a sincronização com grandes quantidades de dados, considere usar Bluetooth clássico ou talvez até Mesmo WiFi.

Bluetooth Clássico (Windows.Devices.Bluetooth.Rfcomm)

As APIs RFCOMM fornecem aos desenvolvedores um soquete para executar a comunicação bidirecional em estilo de porta serial. Depois de ter um soquete, os métodos para escrever e ler são bastante padrão. Uma implementação disso é apresentada no exemplo de Chat rfcomm.

Quando não usar o Bluetooth Rfcomm

  • Notificações. O protocolo GATT Bluetooth tem um comando específico para isso e resultará em um desenho de energia significativamente menor e tempos de resposta mais rápidos.
  • Verificando se há detecção de proximidade ou presença. É melhor usar as APIs de Anúncio e conectar-se por Bluetooth LE.

Por que meu dispositivo Bluetooth LE para de responder após uma desconexão?

O motivo mais comum é porque o dispositivo remoto perdeu informações de emparelhamento. Um grande número de dispositivos Bluetooth mais antigos não exige autenticação. Para proteger o usuário, todas as transações de emparelhamento executadas nas Configurações do Windows exigirão autenticação e alguns dispositivos não foram projetados com isso em mente.

A partir do Windows 10 versão 1511, os desenvolvedores têm controle sobre o handshake de emparelhamento. O Exemplo de Enumeração e Emparelhamento de Dispositivos detalha os vários aspectos da associação de novos dispositivos.

Neste exemplo, iniciamos o emparelhamento com um dispositivo sem criptografia. Observe que isso só funcionará se o dispositivo remoto não exigir criptografia ou autenticação para funcionar.

// Get ceremony type and protection level selections
// You must select at least ConfirmOnly or the pairing attempt will fail
    DevicePairingKinds ceremonySelected = DevicePairingKinds.ConfirmOnly;

//  Workaround remote devices losing pairing information
    DevicePairingProtectionLevel protectionLevel = DevicePairingProtectionLevel.None

    DeviceInformationCustomPairing customPairing = deviceInfoDisp.DeviceInformation.Pairing.Custom;

// Declare an event handler - you don't need to do much in PairingRequestedHandler since the ceremony is "None"
    customPairing.PairingRequested += PairingRequestedHandler;
    DevicePairingResult result = await customPairing.PairAsync(ceremonySelected, protectionLevel);

Preciso emparelhar dispositivos Bluetooth antes de usá-los?

Você não precisa emparelhar dispositivos antes de usá-los se aproveitar o Bluetooth RFCOMM (clássico). A partir do Windows 10 versão 1607, você pode simplesmente consultar dispositivos próximos e conectar-se a eles. O exemplo de chat rfcomm atualizado mostra essa funcionalidade.

(14393 e abaixo) Esse recurso não está disponível para o Cliente GATT (Bluetooth Low Energy), portanto, você ainda precisará emparelhar por meio da página Configurações ou usando as APIs Windows.Devices.Enumeration para acessar esses dispositivos.

(15030 e superior) O emparelhamento de dispositivos Bluetooth não é mais necessário. Use as novas APIs assíncronas como GetGattServicesAsync e GetCharacteristicsAsync para consultar o estado atual do dispositivo remoto. Consulte os documentos do cliente para obter mais detalhes.

Quando devo emparelhar com um dispositivo antes de me comunicar com ele?

Geralmente, se você precisar de um vínculo confiável e de longo prazo com um dispositivo, emparelhe-o direcionando o usuário para a página de configurações ou usando as APIs de Enumeração e Emparelhamento do Dispositivo. Se você simplesmente precisar ler informações do dispositivo exposto publicamente (um sensor de temperatura ou um sinalizador), conecte-se ou ouça anúncios sem fazer nenhum esforço para emparelhar com o dispositivo. Isso evitará problemas de interoperabilidade a longo prazo, pois um grande número de dispositivos não dá suporte ao emparelhamento.

Todos os dispositivos Windows dão suporte à Função Periférica?

Não. Esse é um recurso dependente de hardware, mas um método é fornecido, BluetoothAdapter.IsPeripheralRoleSupported, para consultar se há suporte ou não. Os dispositivos com suporte no momento incluem o Windows Phone no 8992+ e o RPi3 (Windows IoT).

Posso acessar essas APIs do Win32?

Sim, todas essas APIs devem funcionar. Este blog detalha a maneira de chamar APIs do Windows de aplicativos da Área de Trabalho.

Essa funcionalidade deveria existir em um SKU específico?

Bluetooth LE: Sim, todas as funcionalidades estão no OneCore e devem estar disponíveis nos dispositivos mais recentes em uma pilha LE Bluetooth em funcionamento.

Advertência: a função periférica depende de hardware e algumas Edições do Windows Server não dão suporte a Bluetooth.

Bluetooth BR/EDR (Clássico): existem algumas variações, mas, principalmente, elas têm suporte de nível de perfil muito semelhante. Consulte os documentos sobre RFCOMM e esses documentos de perfil com suporte para PC e Telefone