private MultiUserChat muc = null;
private boolean isHistory = false;
private int count = 0;
private final int RECEIVE = 1;
private Handler mGroupHandler = new Handler() {
@Override
public void handleMessage(android.os.Message msg) {
// TODO Auto-generated method stub
switch(msg.what) {
case RECEIVE:
Bundle bd = msg.getData();
String from = bd.getString("from");
String body = bd.getString("body");
String msgHeader = "有新的群消息了";
String msgContent = "\n" + from + ":" + "\n" + body;
if (isHistory) {
ToastDialog.showToast(ZhiyouHomepage.this, msgHeader + msgContent);
}
break;
default:
break;
}
}
};
try {
muc.join("EricSong");
} catch (XMPPException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
muc.addMessageListener(new ChatPacketListener(muc));
muc.addParticipantListener(new PacketListener() {
@Override
public void processPacket(Packet arg0) {
// TODO Auto-generated method stub
Message msg = (Message)arg0;
ToastDialog.showToast(ZhiyouHomepage.this, msg.getFrom()+":"+msg.getBody());
}
});
private class ChatPacketListener implements PacketListener {
private String _number;
private Date _lastDate;
private MultiUserChat _muc;
private String _roomName;
public ChatPacketListener(MultiUserChat muc) {
_number = "0";
_lastDate = new Date(0);
_muc = muc;
_roomName = muc.getRoom();
}
@Override
public void processPacket(Packet packet) {
System.out.println("消息格式:" + packet.toXML());
Message message = (Message) packet;
String from = message.getFrom();
if (message.getBody() != null) {
DelayInformation inf = (DelayInformation) message.getExtension(
"x", "jabber:x:delay");
System.out.println("判断消息");
if (inf == null && count >= 1) {
System.out.println("新消息来了");
isHistory = true;
} else {
System.out.println("这是旧的消息");
}
android.os.Message msg = new android.os.Message();
msg.what = RECEIVE;
Bundle bd = new Bundle();
bd.putString("from", from);
bd.putString("body", message.getBody());
msg.setData(bd);
mGroupHandler.sendMessage(msg);
}
count++;
}
}