Este artigo contém respostas para perguntas frequentes sobre a API Bluetooth do WinRT.
Quais APIs eu uso? Bluetooth Clássico (RFCOMM) ou Gatt (Bluetooth Low Energy)?
Há várias discussões na internet sobre esse assunto em geral, então vamos focar esta resposta especificamente na diferença no que diz respeito 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 do Bluetooth tem um comando específico para isso e resultará em um consumo 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ê só precisa ler informações de um dispositivo que transmite dados publicamente (como um sensor de temperatura ou um beacon), conecte-se a ele ou escute anúncios sem tentar 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 na maioria dos dispositivos mais recentes com uma pilha 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 a documentação sobre RFCOMM e este documento de perfil compatível para PC