【问题标题】:Android Realtime Multiplayer notify connection lostAndroid 实时多人游戏通知连接丢失
【发布时间】:2016-08-19 12:20:25
【问题描述】:

我正在使用 RealTime Multiplayer 从这里创建一个 Android 游戏:
https://developers.google.com/games/services/android/realtimeMultiplayer

如果两个玩家连接到一个房间,并且其中一个玩家的互联网连接中断,我希望另一个玩家得到通知。

目前我没有看到在与其他玩家的连接丢失时调用的任何侦听器。

有没有办法解决这个问题?

【问题讨论】:

  • 欢迎来到 StackOverflow!请阅读How do I ask a good question?
  • 到目前为止你做了什么?你可以发布你的代码吗?解释你是如何遇到你试图解决的问题的。
  • @d.datul1990 我正在实现具有 onPeersDisconnected() 和 onP2PDisconnected() 方法的接口 RoomStatusUpdateListener,但是当玩家连接断开时,这些方法都不会被调用。这些方法仅在用户手动退出游戏(房间)时调用,但在无线/移动数据关闭时不会调用

标签: android google-play-games multiplayer


【解决方案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】:

    这是一种解决方法,但您可以尝试一下,

    1. 您可以重复发送来自两个玩家的消息,以确保 玩家每 1000 次连接到网络 毫秒,

    2. 如果您在 2000 毫秒内没有收到消息,那么 可能是其他玩家端的错误

    【讨论】:

      【解决方案3】:

      创建监听器并检查网络变化

      // Indicates the state of Wi-Fi P2P connectivity has changed.
      intentFilter.addAction(WifiP2pManager.WIFI_P2P_CONNECTION_CHANGED_ACTION);
      

      【讨论】:

      • 已经在使用了,看有 2 位玩家之间的一对一比赛,假设玩家 1 失去连接我们可以使用您的解决方案,但是其他有网络连接的玩家(玩家 2)需要知道玩家 1已失去连接
      猜你喜欢
      • 1970-01-01
      • 2013-06-13
      • 1970-01-01
      • 2015-06-19
      • 2017-06-15
      • 1970-01-01
      • 2021-03-13
      • 2021-07-09
      • 1970-01-01
      相关资源
      最近更新 更多