feat(android): stream the connection info
This commit is contained in:
@@ -289,4 +289,28 @@ class NearbyServiceManager(private var context: Context) {
|
||||
handler.removeCallbacks(postCallback)
|
||||
}
|
||||
}
|
||||
var connectionInfoHandler = object : EventChannel.StreamHandler {
|
||||
private var handler: Handler = Handler(Looper.getMainLooper())
|
||||
private var eventSink: EventChannel.EventSink? = null
|
||||
|
||||
val postCallback = object : Runnable {
|
||||
override fun run() {
|
||||
handler.post { eventSink?.success(receiver.wifiInfo?.toJsonString()) }
|
||||
handler.postDelayed(this, 1000)
|
||||
}
|
||||
}
|
||||
|
||||
override fun onListen(arguments: Any?, sink: EventChannel.EventSink?) {
|
||||
onCancel(null)
|
||||
eventSink = sink
|
||||
Logger.d("Listen connection info")
|
||||
handler.postDelayed(postCallback, 1000)
|
||||
}
|
||||
|
||||
override fun onCancel(p0: Any?) {
|
||||
Logger.d("Kill last process connection info")
|
||||
eventSink = null
|
||||
handler.removeCallbacks(postCallback)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -17,6 +17,7 @@ import kotlinx.coroutines.launch
|
||||
const val CHANNEL_NAME = "nearby_service"
|
||||
const val PEERS_CHANNEL_NAME = "nearby_service_peers"
|
||||
const val CONNECTED_DEVICE_CHANNEL_NAME = "nearby_service_connected_device"
|
||||
const val CONNECTION_INFO_CHANNEL_NAME = "nearby_service_connection_info"
|
||||
|
||||
/**
|
||||
* Plugin for creating connections in the Wi-fi Direct scope.
|
||||
@@ -27,6 +28,7 @@ class NearbyServicePlugin : FlutterPlugin, MethodCallHandler, ActivityAware {
|
||||
private lateinit var manager: NearbyServiceManager
|
||||
private lateinit var peersChannel: EventChannel
|
||||
private lateinit var connectedDeviceChannel: EventChannel
|
||||
private lateinit var connectionInfoChannel: EventChannel
|
||||
|
||||
|
||||
@OptIn(DelicateCoroutinesApi::class)
|
||||
@@ -157,6 +159,9 @@ class NearbyServicePlugin : FlutterPlugin, MethodCallHandler, ActivityAware {
|
||||
|
||||
connectedDeviceChannel = EventChannel(binaryMessenger, CONNECTED_DEVICE_CHANNEL_NAME)
|
||||
connectedDeviceChannel.setStreamHandler(manager.connectedDeviceInfoHandler)
|
||||
|
||||
connectionInfoChannel = EventChannel(binaryMessenger, CONNECTION_INFO_CHANNEL_NAME)
|
||||
connectionInfoChannel.setStreamHandler(manager.connectionInfoHandler)
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user