Android 实时多人游戏通知连接丢失
Posted
技术标签:
【中文标题】Android 实时多人游戏通知连接丢失【英文标题】:Android Realtime Multiplayer notify connection lost 【发布时间】:2016-08-19 12:20:25 【问题描述】:我正在使用 RealTime Multiplayer 从这里创建一个 android 游戏:https://developers.google.com/games/services/android/realtimeMultiplayer
如果两个玩家连接到一个房间,并且其中一个玩家的互联网连接中断,我希望另一个玩家得到通知。
目前我没有看到在与其他玩家的连接丢失时调用的任何侦听器。
有没有办法解决这个问题?
【问题讨论】:
欢迎来到 ***!请阅读How do I ask a good question? 到目前为止你做了什么?你可以发布你的代码吗?解释你是如何遇到你试图解决的问题的。 @d.datul1990 我正在实现具有 onPeersDisconnected() 和 onP2PDisconnected() 方法的接口 RoomStatusUpdateListener,但是当玩家连接断开时,这些方法都不会被调用。这些方法仅在用户手动退出游戏(房间)时调用,但在无线/移动数据关闭时不会调用 【参考方案1】:我使用了在活动中实现的RealTimeMultiplayer.ReliableMessageSentCallback
接口,并通过以下方式使用了解决方法
@Override
public void onRealTimeMessageSent(int statusCode, int tokenId, String recipientParticipantId)
switch (statusCode)
case GamesStatusCodes.STATUS_OK:
messageSent = true;
break;
case GamesStatusCodes.STATUS_REAL_TIME_ROOM_NOT_JOINED:
break;
case GamesStatusCodes.STATUS_REAL_TIME_MESSAGE_SEND_FAILED:
messageSent = false;
break;
但GamesStatusCodes.STATUS_REAL_TIME_MESSAGE_SEND_FAILED
仍然会在 15 到 30 秒后被调用
【讨论】:
【参考方案2】:这是一种解决方法,但您可以尝试一下,
您可以重复发送来自两个玩家的消息,以确保 玩家每 1000 次连接到网络 毫秒,
如果您在 2000 毫秒内没有收到消息,那么 可能是其他玩家端的错误
【讨论】:
【参考方案3】:创建监听器并检查网络变化
// Indicates the state of Wi-Fi P2P connectivity has changed.
intentFilter.addAction(WifiP2pManager.WIFI_P2P_CONNECTION_CHANGED_ACTION);
【讨论】:
已经在使用了,看有 2 位玩家之间的一对一比赛,假设玩家 1 失去连接我们可以使用您的解决方案,但是其他有网络连接的玩家(玩家 2)需要知道玩家 1已失去连接以上是关于Android 实时多人游戏通知连接丢失的主要内容,如果未能解决你的问题,请参考以下文章