Skip to content

Commit f9b1abd

Browse files
committed
fix: add getConnectedDevices support on Android
1 parent 94a333d commit f9b1abd

File tree

4 files changed

+18
-1
lines changed

4 files changed

+18
-1
lines changed

example/pubspec.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@ dependency_overrides:
2929
path: ../packages/flutter_reactive_ble
3030
reactive_ble_mobile:
3131
path: ../packages/reactive_ble_mobile
32+
reactive_ble_platform_interface:
33+
path: ../packages/reactive_ble_platform_interface
3234

3335
flutter:
3436
uses-material-design: true

packages/reactive_ble_mobile/android/src/main/kotlin/com/signify/hue/flutterreactiveble/PluginController.kt

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,8 @@ class PluginController {
3636
"stopNotifications" to this::stopNotifications,
3737
"negotiateMtuSize" to this::negotiateMtuSize,
3838
"requestConnectionPriority" to this::requestConnectionPriority,
39-
"discoverServices" to this::discoverServices
39+
"discoverServices" to this::discoverServices,
40+
"getConnectedDevices" to this::getConnectedDevices
4041
)
4142

4243
lateinit var bleClient: com.signify.hue.flutterreactiveble.ble.BleClient
@@ -267,4 +268,11 @@ class PluginController {
267268
})
268269
.discard()
269270
}
271+
272+
private fun getConnectedDevices(call: MethodCall, result: Result) {
273+
val devices = bleClient.getConnectedDevices().map{ protoConverter.convertToDeviceInfo(it) }
274+
val message = pb.DeviceInfoCollection.newBuilder()
275+
devices.forEachIndexed { index, device -> message.setDevices(index, device)}
276+
result.success(message.build().toByteArray())
277+
}
270278
}

packages/reactive_ble_mobile/android/src/main/kotlin/com/signify/hue/flutterreactiveble/ble/BleClient.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ interface BleClient {
1818
fun initializeClient()
1919
fun scanForDevices(services: List<ParcelUuid>, scanMode: ScanMode, requireLocationServicesEnabled: Boolean): Observable<com.signify.hue.flutterreactiveble.ble.ScanInfo>
2020
fun connectToDevice(deviceId: String, timeout: Duration)
21+
fun getConnectedDevices(): List<com.signify.hue.flutterreactiveble.ble.ConnectionUpdateSuccess>
2122
fun disconnectDevice(deviceId: String)
2223
fun disconnectAllDevices()
2324
fun discoverServices(deviceId: String): Single<RxBleDeviceServices>

packages/reactive_ble_mobile/android/src/main/kotlin/com/signify/hue/flutterreactiveble/ble/ReactiveBleClient.kt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import com.polidea.rxandroidble2.scan.ScanSettings
1818
import com.signify.hue.flutterreactiveble.ble.extensions.writeCharWithResponse
1919
import com.signify.hue.flutterreactiveble.ble.extensions.writeCharWithoutResponse
2020
import com.signify.hue.flutterreactiveble.converters.extractManufacturerData
21+
import com.signify.hue.flutterreactiveble.model.ConnectionState
2122
import com.signify.hue.flutterreactiveble.model.ScanMode
2223
import com.signify.hue.flutterreactiveble.model.toScanSettings
2324
import com.signify.hue.flutterreactiveble.utils.Duration
@@ -117,6 +118,11 @@ open class ReactiveBleClient(private val context: Context) : BleClient {
117118
)
118119
}
119120

121+
override fun getConnectedDevices(): List<ConnectionUpdateSuccess> {
122+
return activeConnections.keys.toList()
123+
.map { ConnectionUpdateSuccess(it, ConnectionState.CONNECTED.code) }
124+
}
125+
120126
override fun disconnectDevice(deviceId: String) {
121127
activeConnections[deviceId]?.disconnectDevice(deviceId)
122128
activeConnections.remove(deviceId)

0 commit comments

Comments
 (0)