Bluetooth Low Energy device discovery management. More...
Import Statement: | import Felgo 4.0 |
Since: | Felgo 3.7.0 |
General info and usage examples for Bluetooth LE: Use Bluetooth Low Energy
The BluetoothLeManager component controls the Local Bluetooth device, the local bluetooth device can be turned on and off in Android, on iOS the device status is set via event updates only and might not be completely accurate.
The local device mode can be set to Central only at the moment, via the Role enumeration and role property. Device discovery is started by setting the discoveryRunning property to true
, once a new device is discovered the deviceDiscovered
signal is emitted.
Connect to a device by calling the connect method and passing the desired remote device as parameter, this will also start the service discovery. Stop the connection by calling the disconnect method.
You can define ahead of time the devices and services you expect to connect to, this way it's simpler than using the values from the device list, since you can reference the service component id in other parts of your QML code.
BluetoothLeManager { BluetoothLeDevice { id: myDevice BluetoothLeService { id: myDeviceBatteryService uuid: 0x180F } } }
Note: On Android location permission must be set and location must be enabled for device discovery to work.
ManagerState : enumeration |
Specifies the Local Device on state.
BluetoothLeManager.PoweredOff
The Local Bluetooth Device state is powered off.BluetoothLeManager.PoweredOn
The Local Bluetooth Devices state is powered on.See also state.
Role : enumeration |
Specifies the Local Device role, the default value is BluetoothLeManager.Central.
BluetoothLeManager.Central
The Local Bluetooth Device acts as Central device.BluetoothLeManager.Peripheral
The Local Bluetooth Devices acts as Peripheral, not implemented.See also role.
devices : list<BluetoothLeDevice> |
List children devices described in QML used for connection, you can describe multiple devices if your use case case requires you to have the ability to connect to several devices, of the same or different type.
discoveredDevices : list<BluetoothLeDevice> |
List of devices discovered from the last time the discoveryRunning property was set to true
, the list is cleared every time a new discovery
process starts.
discoveryRunning : bool |
Enable or disable device discovery.
discoveryTimeout : int |
Device discovery in milliseconds, a 0 timeout is used for continuous discovery until the discoveryRunning property is set to false
. The
default value is 5000
ms.
localDeviceName : string |
The local Bluetooth device name, empty on iOS and macOS.
role : BluetoothLeManager::Role |
Sets the Bluetooth stack for Central or Peripheral role, default value is Central
, only Central role is implemented at the moment.
state : BluetoothLeManager::ManagerState |
Enable or disable Local Bluetooth Device on Android, read-only on state in iOS.
deviceDiscovered(QVariantMap device) |
Emitted for every new device discovered by the Bluetooth LE controller. A device object with the following properties:
name
As reported by the remote device, might be emptyaddress
The remote device address, in android corresponds to the actual remote device address, on iOS a random unique address is returnedservices
A list of the advertised services in long string format.rssi
The rssi signal at the moment of discovery.Check if the discovered contains one or more services you are interested and connect to it.
BluetoothLeManager { discoveryRunning: true BluetoothLeDevice{ id: myBleDevice } onDeviceDiscovered: device => { // Match device with service UUID if (device.services.indexOf('{0000180f-0000-1000-8000-00805f9b34fb}') > -1) { //Set and connect myBleDevice.setDevice(device, true) discoveryRunning = false } } }
Note: The corresponding handler is onDeviceDiscovered
.