2016-04-25 9 views
1

ich Realtime Multiplayer bin mit von hier ein Spiel für Android zu erstellen:
https://developers.google.com/games/services/android/realtimeMultiplayer
Android Echtzeit-Multiplayer benachrichtigt Verbindung verloren

Wenn zwei Spieler zu einem Raum verbunden sind, und die Internet-Verbindung von einem von ihnen zu unterbrechen, Ich möchte, dass der andere Spieler benachrichtigt wird.

Momentan sehe ich keinen Listener, der angerufen wird, wenn eine Verbindung mit einem anderen Player verloren gegangen ist.

Gibt es eine Möglichkeit, dies zu verwalten?

+0

Willkommen bei StackOverflow! Bitte lesen Sie [Wie stelle ich eine gute Frage?] (Http://stackoverflow.com/help/how-to-ask) –

+0

Was haben Sie bisher gemacht? Kannst du deinen Code posten? Erklären Sie, wie Sie auf das Problem gestoßen sind, das Sie lösen möchten. –

+1

@ d.datul1990 Ich implementiere das Interface RoomStatusUpdateListener mit den Methoden onPeersDisconnected() und onP2PDisconnected(), aber keine dieser Methoden wird aufgerufen, wenn ein Player eine Verbindung unterbrochen hat. Diese Methoden werden nur aufgerufen, wenn ein Benutzer das Spiel manuell beendet (Raum), aber nicht angerufen wird, wenn die WLAN-/Mobildaten ausgeschaltet sind. –

Antwort

3

ich verwendet habe RealTimeMultiplayer.ReliableMessageSentCallback Schnittstelle an der Aktivität implementiert und verwendet haben, Abhilfe dies auf folgende Weise

@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; 

      } 
     } 

aber immer noch die GamesStatusCodes.STATUS_REAL_TIME_MESSAGE_SEND_FAILED wird nach 15 genannt sagen bis 30 Sekunden später

0

einen Listener erstellen und Check-Netzwerk ändert

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

Bereits verwenden, schauen, es gibt eins zu eins Spiel zwischen 2 Spielern, sagen Spieler 1 verliert Verbindung wir kann deine Lösung verwenden, aber ein anderer Spieler (Spieler 2), der eine Netzwerkverbindung hat, muss wissen, ob Spieler 1 die Verbindung verloren hat –

2

Es ist eine Abhilfe, aber sie ein Versuch,

  1. Sie können immer wieder senden Massagen von beiden Spielern , um sicherzustellen, dass die Spieler mit dem Netzwerk verbunden sind, sagen alle 1000 Millisekunden,

  2. Wenn Sie keine Meldung für etwa 2000 Millisekunden dann dort bekommen haben möglicherweise ein Fehler bei den anderen Spielern Ende

Verwandte Themen