package com.fiteclub.android.smack; import org.jivesoftware.smack.XMPPException; import org.jivesoftware.smackx.muc.MultiUserChat; import com.fiteclub.android.R; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.util.Log; import android.widget.Toast; public class GameTestActivity extends Activity { private static final String TAG = "GameTestActivity"; private XmppManager xmppManager; private String userName; private MultiUserChat muc; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); this.setTitle("Game Test"); Log.d(TAG, "onCreate"); Intent intent = this.getIntent(); if (intent.hasExtra(MatchService.EXTRA_GAME_START)) { String player1 = intent.getStringExtra(MatchService.EXTRA_GAME_PLAYER1); String player2 = intent.getStringExtra(MatchService.EXTRA_GAME_PLAYER2); String roomName = intent.getStringExtra(MatchService.EXTRA_GAME_ROOMNAME); int side = intent.getIntExtra(MatchService.EXTRA_GAME_START, 0); startGame(side, player1, player2, roomName); } Log.d(TAG, "onCreate end"); } private void startGame(int side, String player1, String player2, String roomName) { Log.d(TAG, "startGame"); Log.d(TAG, "side: " + side); Log.d(TAG, "player1: " + player1); Log.d(TAG, "player2: " + player2); Log.d(TAG, "roomName: " + roomName); if (side == MatchService.PLAYER1_SIDE) { userName = player1; } else { userName = player2; } xmppManager = XmppManager.getManager(); muc = xmppManager.openGameRoom(roomName, new MessageListener() { public void processMessage(String message) { Log.d(TAG, "Got a new message: " + message); } }); if (muc == null) { Toast.makeText(this, "Can not open game room!", Toast.LENGTH_LONG).show(); return; } new Thread() { @Override public void run() { playGame(); } }.start(); } private void playGame() { for (int i=0; i<100; i++) { if (muc == null) return; try { muc.sendMessage("Message from " + userName + " id=" + i); } catch (XMPPException e) { e.printStackTrace(); } try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } } } @Override protected void onDestroy() { super.onDestroy(); if (xmppManager != null) { if ((muc != null) && (muc.isJoined())) muc.leave(); muc = null; xmppManager.clear(); xmppManager = null; } } }