Bearbeiten

Freigeben über


Häufig gestellte Fragen zu Bluetooth-Entwickler

Dieser Artikel enthält Antworten auf häufig gestellte Fragen zur UWP-Bluetooth-API.

Welche APIs verwende ich? Bluetooth Classic (RFCOMM) oder Bluetooth Low Energy (GATT)?

Es gibt verschiedene Diskussionen online um dieses allgemeine Thema, damit wir diese Antwort in Bezug auf Windows quadratisch auf den Unterschied halten. Hier sind einige allgemeinen Richtlinien:

Bluetooth LE (Windows.Devices.Bluetooth.GenericAttributeProfile)

Verwenden Sie die GATT-APIs, wenn Sie mit einem Gerät kommunizieren, das Bluetooth Low Energy unterstützt. Wenn Ihr Anwendungsfall selten, geringe Bandbreite oder geringe Energie erfordert, ist Bluetooth Low Energy die Antwort. Der Hauptnamespace, der diese Funktionalität enthält, ist Windows.Devices.Bluetooth.GenericAttributeProfile.

Wann nicht Bluetooth LE verwendet werden soll

  • Szenarien mit hoher Bandbreite, hoher Frequenz. Wenn Sie ständig mit großen Datenmengen synchronisiert werden müssen, sollten Sie bluetooth classic oder vielleicht sogar WLAN verwenden.

Bluetooth Classic (Windows.Devices.Bluetooth.Rfcomm)

Die RFCOMM-APIs bieten Entwicklern einen Socket, um eine bidirektionale serielle Port-Stil-Kommunikation durchzuführen. Sobald Sie über einen Socket verfügen, sind die Methoden zum Schreiben und Lesen ziemlich standard. Eine Implementierung dieser Vorgehensweise wird im Rfcomm-Chatbeispiel vorgestellt.

Wann nicht bluetooth Rfcomm verwendet werden soll

  • Benachrichtigungen. Das Bluetooth GATT-Protokoll verfügt über einen speziellen Befehl dafür und führt zu deutlich weniger Stromschub und schnelleren Reaktionszeiten.
  • Überprüfen auf Näherungs- oder Anwesenheitserkennung. Besser, um die Ankündigungs-APIs zu verwenden und über Bluetooth LE eine Verbindung herzustellen.

Warum reagiert mein Bluetooth LE-Gerät nach einer Verbindung nicht mehr?

Der häufigste Grund hierfür ist, dass das Remotegerät Kopplungsinformationen verloren hat. Eine große Anzahl älterer Bluetooth-Geräte erfordert keine Authentifizierung. Um den Benutzer zu schützen, benötigen alle Kopplungstransaktionen, die von der Einstellungsanwendung ausgeführt werden, eine Authentifizierung, und einige Geräte wurden nicht so konzipiert.

Ab Windows 10 Release 1511 haben Entwickler die Kontrolle über den Kopplungs-Handshake. Im Beispiel "Geräteaufzählung" und "Kopplung" werden die verschiedenen Aspekte der Zuordnung neuer Geräte beschrieben.

In diesem Beispiel wird die Kopplung mit einem Gerät ohne Verschlüsselung initiiert. Beachten Sie, dass dies nur funktioniert, wenn für das Remotegerät keine Verschlüsselung oder Authentifizierung erforderlich ist.

// 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);

Muss ich Bluetooth-Geräte koppeln, bevor ich sie verwende?

Sie müssen Geräte nicht koppeln, bevor Sie sie verwenden, wenn Sie Bluetooth RFCOMM (klassisch) nutzen. Ab Windows 10 Release 1607 können Sie einfach nach Geräten in der Nähe abfragen und eine Verbindung mit diesen herstellen. Das aktualisierte RFCOMM-Chatbeispiel zeigt diese Funktionalität.

(14393 und darunter) Dieses Feature ist für Bluetooth Low Energy (GATT-Client) nicht verfügbar, sodass Sie weiterhin über die Seite "Einstellungen" oder die Windows.Devices.Enumeration-APIs koppeln müssen, um auf diese Geräte zuzugreifen.

(15030 und höher) Das Koppeln von Bluetooth-Geräten ist nicht mehr erforderlich. Verwenden Sie die neuen Async-APIs wie GetGattServicesAsync und GetCharacteristicsAsync, um den aktuellen Zustand des Remotegeräts abzufragen. Weitere Informationen finden Sie in den Clientdokumenten .

Wann sollte ich vor der Kommunikation mit einem Gerät koppeln?

Wenn Sie eine vertrauenswürdige, langfristige Bindung mit einem Gerät benötigen, koppeln Sie sie, indem Sie den Benutzer entweder auf die Einstellungsseite leiten oder die APIs für Geräteaufzählung und Kopplung verwenden. Wenn Sie einfach Informationen von dem Gerät lesen müssen, das öffentlich verfügbar gemacht wird (temperatursensor oder Beacon), verbinden oder hören Sie Werbung, ohne sich bemühen zu müssen, mit dem Gerät zu koppeln. Dies verhindert langfristig Interoperabilitätsprobleme, da eine große Anzahl von Geräten die Kopplung nicht unterstützt.

Unterstützen alle Windows-Geräte die Peripherierolle?

Nein Dies ist ein hardwareabhängiges Feature, aber eine Methode wird bereitgestellt, BluetoothAdapter.IsPeripheralRoleSupported, um abzufragen, ob sie unterstützt wird. Derzeit unterstützte Geräte umfassen Windows Phone auf 8992+ und RPi3 (Windows IoT).

Kann ich über Win32 auf diese APIs zugreifen?

Ja, all diese APIs sollten funktionieren. In diesem Blog wird beschrieben, wie Windows-APIs aus Desktopanwendungen aufgerufen werden.

Soll diese Funktionalität auf einer bestimmten SKU vorhanden sein?

Bluetooth LE: Ja, alle Funktionen befinden sich in OneCore und sollten auf den neuesten Geräten mit einem funktionierenden Bluetooth LE-Stapel verfügbar sein.

Vorbehalt: Die Peripherierolle ist hardwareabhängig, und einige Windows Server-Editionen unterstützen Bluetooth nicht.

Bluetooth BR/EDR (Klassisch): Einige Variationen sind zwar vorhanden, haben jedoch meist eine sehr ähnliche Profilebenenunterstützung. Weitere Informationen finden Sie in den Dokumenten zu RFCOMM und diesen unterstützten Profildokumenten für PC und Telefon