The BluetoothLEHelper class provides functionality to easily enumerate, connect to and interact with Bluetooth LE Peripherals.
BluetoothLEHelper class
Properties
| Property |
Type |
Description |
| BluetoothLeDevices |
ObservableCollection<ObservableBluetoothLEDevice> |
Gets the list of available bluetooth devices |
| IsEnumerating |
bool |
Gets a value indicating whether app is currently enumerating |
| IsPeripheralRoleSupported |
bool |
Gets a value indicating whether peripheral mode is supported by this device |
| IsCentralRoleSupported |
bool |
Gets a value indicating whether central role is supported by this device |
Methods
| Methods |
Return Type |
Description |
| StartEnumeration() |
void |
Starts enumeration of bluetooth le devices |
| StopEnumeration() |
void |
Stops enumeration of bluetooth device |
Events
| Events |
Description |
| EnumerationCompleted |
An event for when the enumeration is complete |
ObservableBluetoothLEDevice class
Properties
| Property |
Type |
Description |
| BluetoothAddressAsString |
string |
Gets the bluetooth address of this device as a string |
| BluetoothAddressAsUlong |
ulong |
Gets the bluetooth address of this device |
| BluetoothLEDevice |
BluetoothLEDevice |
Gets the base bluetooth device this class wraps |
| DeviceInfo |
DeviceInformation |
Gets the device information for the device this class wraps |
| ErrorText |
string |
Gets the error text when connecting to this device fails |
| Glyph |
BitmapImage |
Gets or sets the glyph of this bluetooth device |
| IsConnected |
bool |
Gets a value indicating whether this device is connected |
| IsPaired |
bool |
Gets a value indicating whether this device is paired |
| Name |
string |
Gets the name of this device |
| RSSI |
int |
Gets the RSSI value of this device |
| Services |
ObservableCollection<ObservableGattDeviceService> |
Gets the services this device supports |
| ServiceCount |
int |
Gets or sets the number of services this device has |
Methods
| Methods |
Return Type |
Description |
| ConnectAsync() |
Task |
ConnectAsync to this bluetooth device |
| DoInAppPairingAsync() |
Task |
Does the in application pairing |
| UpdateAsync(DeviceInformationUpdate) |
Task |
Updates this device's deviceInformation |
| ToString() |
string |
Overrides the ToString function to return the name of the device |
ObservableGattDeviceService
Properties
| Property |
Type |
Description |
| Characteristics |
ObservableCollection<ObservableGattCharacteristics> |
Gets all the characteristics of this service |
| Name |
string |
Gets the name of this service |
| UUID |
string |
Gets the UUID of this service |
| Service |
GattDeviceService |
Gets the service this class wraps |
ObservableGattCharacteristics
Properties
| Property |
Type |
Description |
| Characteristic |
GattCharacteristic |
Gets or sets the characteristic this class wraps |
| IsIndicateSet |
bool |
Gets a value indicating whether indicate is set |
| IsNotifySet |
bool |
Gets a value indicating whether notify is set |
| Parent |
ObservableGattDeviceService |
Gets or sets the parent service of this characteristic |
| Name |
string |
Gets or sets the name of this characteristic |
| UUID |
string |
Gets or sets the UUID of this characteristic |
| Value |
string |
Gets the value of this characteristic |
| DisplayType |
DisplayTypes |
Gets or sets how this characteristic's value should be displayed |
Methods
| Methods |
Return Type |
Description |
| ReadValueAsync() |
Task<string> |
Reads the value of the Characteristic |
| SetIndicateAsync() |
Task<bool> |
Set's the indicate descriptor |
| StopIndicateAsync() |
Task<bool> |
Unset the indicate descriptor |
| SetNotifyAsync() |
Task<bool> |
Sets the notify characteristic |
| StopNotifyAsync() |
Task<bool> |
Unsets the notify descriptor |
Example
// Get a local copy of the context for easier reading
BluetoothLEHelper bluetoothLEHelper = BluetoothLEHelper.Context;
// check if BluetoothLE APIs are available
if (BluetoothLEHelper.IsBluetoothLESupported)
{
// Start the Enumeration
bluetoothLEHelper.StartEnumeration();
// At this point the user needs to select a device they want to connect to. This can be done by
// creating a ListView and binding the bluetoothLEHelper collection to it. Once a device is found,
// the Connect() method can be called to connect to the device and start interacting with its services
// Connect to a device if your choice
ObservableBluetoothLEDevice device = bluetoothLEHelper.BluetoothLeDevices[<Device you choose>];
await device.ConnectAsync();
// At this point the device is connected and the Services property is populated.
// See all the services
var services = device.Services;
}
' Get a local copy of the context for easier reading
Dim bluetoothLEHelper As BluetoothLEHelper = BluetoothLEHelper.Context
' check if BluetoothLE APIs are available
If BluetoothLEHelper.IsBluetoothLESupported Then
' Start the Enumeration
bluetoothLEHelper.StartEnumeration()
' At this point the user needs to select a device they want to connect to. This can be done by
' creating a ListView and binding the bluetoothLEHelper collection to it. Once a device is found,
' the Connect() method can be called to connect to the device and start interacting with its services
' Connect to a device if your choice
Dim device As ObservableBluetoothLEDevice = bluetoothLEHelper.BluetoothLeDevices(<Device you choose>)
Await device.ConnectAsync()
' At this point the device is connected and the Services property is populated.
' See all the services
Dim services = device.Services
End If
Sample Project
BluetoothLE Helper Sample Page Source. You can see this in action in the Windows Community Toolkit Sample App.
Requirements
| Device family |
Universal, 10.0.16299.0 or higher |
| Namespace |
Microsoft.Toolkit.Uwp.Connectivity |
| NuGet package |
Microsoft.Toolkit.Uwp |
API