2013-07-11 11 views
5

Çok oyunculu oyunda 2 rakibim var. Bir diğeri ağ sorunu/ayrımı olduğunda 1 eşler nasıl bildirilir? onPeerLeft ya da onPeersDisconnected'un nerede kovulduğunu bekliyordum, ama hiçbir şey! Aslında Google Play Hizmetleri: Eşlerin ağ bağlantısının kesilmesi nasıl kullanılır?

Bir akran belirli bir süre içinde ping mesajı almazsa ben kullanıcıya şey atmak, böylece ping bir tür mekanizma uygulamak için gidiyorum (kopuk olduğu rakibini belirten bir iletişim kutusu.)

Alternatif olarak, bu tür bir sorun ne zaman dinleneceğini dinlemek için bir geri arama var mı? Ben akran veri göndermek olamazsa algılamak için onRealTimeMessageSent geri arama kullanıyorum bağlantısız eş On

, aşağıdaki gibi: diğer eşe Açık

@Override 
public void onRealTimeMessageSent(int statusCode, int token, String arg2) { 
    //f the peer can't send data 
    if (statusCode == GamesClient.STATUS_REAL_TIME_MESSAGE_SEND_FAILED) { 
     //here I show an error dialog and move out of game 
    } 
} 

, başka hiçbir geri aramalar (örneğin onPeerLeft veya onPeersDisconnected olarak yetiştirilir)

Herhangi bir öneri? Şimdiden teşekkürler! Eğer builder.build() çağırmadan önce setRoomStatusUpdateListener (RoomStatusUpdateListener) çağırarak olabilir gibi

+0

tamam, nihayet "onRoomConnected" geri çağrısında bir "Timertask" her 5 saniyede bir "Timer" sheduling olan bir ping-pong mekanizması seçtim. Sonra, yeni mesajı göndermeden önce son alınan ping süresini kontrol ederim, eğer geçen süre bir ping zamanından daha büyükse, uygun hata mesajını atabiliyorum. Başka önerileriniz kabul edilir! –

cevap

0

Sesler

Düzenleme: oluşturucu sizin RoomConfig.Builder

+0

Evet, dinleyiciyi hem aldığım bir davet üzerine hem de "build()" ifadesini çağırmadan önce select player niyetinden etkinlik sonucu ayarlıyorum. Ağ bağlantısı tamam ise 'onPeerLeft' ve diğer geçersiz kılınmış yöntemler denir. Ama durum böyle değil. Bir ping değişimi ile bir zaman aralığında doğru şekilde veri gönderip aldığımı izleyebilirim. –

+0

onPeerDisconnected, diğer oyuncu sunucudan zorla kesilirse çağrılmalı, onPeerLeft yalnızca oyuncunun bırakma niyeti olduğunda çağrılacaktır. Arayüz yöntemlerinin her birine bir Tost eklemeye çalışabilirsiniz, böylece aradıklarını görebilirsiniz. – mmizzle9