Editar

Share via


Perguntas frequentes de desenvolvedores para recursos Bluetooth

Este artigo contém respostas às perguntas mais comuns sobre a API Bluetooth da UWP.

Quais APIs devo usar? Bluetooth Clássico (RFCOMM) ou Bluetooth de Baixa Energia (GATT)?

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

Bluetooth LE (Windows.Devices.Bluetooth.GenericAttributeProfile)

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

Quando não usar o Bluetooth LE

  • Grande largura de banda, cenários de alta frequência. Se você precisar manter constantemente a sincronização com grandes quantidades de dados, considere o uso do Bluetooth clássico ou talvez até Wi-Fi.

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

As APIs RFCOMM dão 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 do Bluetooth tem um comando específico para isso e resultará em significativamente menos consumo de energia e tempos de resposta.
  • Verificação de detecção de presença ou de proximidade. 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 perda de conexão?

O motivo mais comum para isso ocorrer é 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 no aplicativo Configurações 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. A enumeração do dispositivo e o exemplo de emparelhamento fornecem detalhes sobre os vários aspectos de associação de novos dispositivos.

Neste exemplo, iniciamos o emparelhamento com um dispositivo sem usar nenhuma criptografia. Observe que isso funcionará somente 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);

É necessário emparelhar dispositivos Bluetooth antes de usá-los?

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

(14393 e abaixo) Esse recurso não está disponível para 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. Veja os Documentos de 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 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 sinalizador), conecte-se ou ouça anúncios sem fazer nenhum esforço para emparelhar com o dispositivo. Isso impedirá problemas de interoperabilidade no 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 ele tem suporte ou não. Os dispositivos com suporte no momento incluem o Windows Phone no 8992+ e 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, toda a funcionalidade está no OneCore e deve estar disponível nos dispositivos mais recentes com uma pilha de Bluetooth LE funcional.

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