我想在我的应用程序中使用附近的连接。现在我只使用预连接状态。我唯一应该知道的是一个设备是否在另一个设备的视线范围内。但是要求发生了变化,所以现在我需要在开始其他进程之前连接两个设备。所以现在我有几个问题:
- 我想传递给发现者的唯一东西是一个字符串。我不需要真正的流或其他东西。但是,如果我只在不到一分钟的时间内收到断开连接时才传递字符串。但正如我之前提到的,我需要有一个开放的连接。所以现在我决定每 40 秒传递一次相同的字符串。它似乎没用,但我找不到另一种保持连接打开的方法。
- 谷歌文档说:
根据您的用例,您可能希望向用户显示已发现设备的列表,允许他们选择要连接的设备。
但我找不到如何向用户显示可用连接的示例。当前解决方案:
private val connectionLifecycleCallback: ConnectionLifecycleCallback =
object : ConnectionLifecycleCallback() {
override fun onConnectionInitiated(endpointId: String, connectionInfo: ConnectionInfo) {
Timber.e("onConnectionInitiated $endpointId")
Nearby.getConnectionsClient(context).acceptConnection(endpointId, receiveBytesPayloadListener)
//automatic connection from both sides
}
override fun onConnectionResult(endpointId: String, result: ConnectionResolution) {
Timber.e("onConnectionResult $endpointId")
when (result.status.statusCode) {
ConnectionsStatusCodes.STATUS_OK -> {
Timber.e("onConnectionResult.STATUS_OK $endpointId ")
val bytesPayload = Payload.fromBytes("${UserRepo.rideId} ".toByteArray())
myTimer = Timer()
myTimer?.schedule(object : TimerTask() {
override fun run() {
Nearby.getConnectionsClient(context).sendPayload(endpointId, bytesPayload)
}
}, 0, 40_000)
}
ConnectionsStatusCodes.STATUS_CONNECTION_REJECTED -> {
Timber.e("onConnectionResult.STATUS_CONNECTION_REJECTED ")
}
ConnectionsStatusCodes.STATUS_ERROR -> {
Timber.e("onConnectionResult.STATUS_ERROR ")
}
else -> {
}
}
}
override fun onDisconnected(endpointId: String) {
Timber.e("onDisconnected... $endpointId")
}
}
提前致谢。