Android XMPP实现IM 群聊功能

来源:互联网 发布:node v6.3.0 x64.msi 编辑:程序博客网 时间:2024/06/05 08:34
时间仓促,在此仅做一些流水式的记录,便于后面查询。主要的代码片段如下:

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


muc = new MultiUserChat(SmackImpl.mXMPPConnection, "xiaoyou@conference.job36-247-5");
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++;
  }
 }


Android XMPP实现IM 群聊功能 - 好灵敏 - 好灵敏的空间
 
Android XMPP实现IM 群聊功能 - 好灵敏 - 好灵敏的空间
 
0 0
原创粉丝点击