专业IM即时通讯软件开发,值得信赖!

Android(xmpp+smack+openfire)高仿QQ即时通讯【5】消息发送,接收;修改心情的实现

openfire 云聊IM 2159℃

这一节就是消息发送与接收的实现了

//消息监听
ChatManager cm = XmppConnection.getConnection().getChatManager();   
//发送消息给pc服务器的好友(获取自己的服务器,和好友)
final Chat newchat = cm.createChat(pFRIENDID, null);
cm.addChatListener(new ChatManagerListener() {
  @Override
  public void chatCreated(Chat chat, boolean able) {
    chat.addMessageListener(new MessageListener() {
      @Override
      public void processMessage(Chat chat, Message message) {
        //收到来自pc服务器的消息(获取自己好友发来的信息)
        if(message.getFrom().contains(userChat))
        {
          //获取用户、消息、时间、IN
          String[] args = new String[] {userChat, message.getBody(), TimeRender.getDate(), "IN" };
          //在handler里取出来显示消息
          android.os.Message msg = handler.obtainMessage();
          msg.what = 1;
          msg.obj = args;
          msg.sendToTarget();
        }
      }
    });
  }
});

发送消息主要代码:

//发送消息
Button btsend = (Button) findViewById(R.id.formclient_btsend);
btsend.setOnClickListener(new OnClickListener() {
  @Override
  public void onClick(View v) {
    //获取text文本
    String msg = msgText.getText().toString();      
    if(msg.length() > 0){
      //发送消息
      listMsg.add(new Msg(pUSERID, msg, TimeRender.getDate(), "OUT"));
      //刷新适配器
      adapter.notifyDataSetChanged();       
      try {
        //发送消息
        newchat.sendMessage(msg);         
      }catch (XMPPException e)
      {
        e.printStackTrace();
      }
    }
    else
    {
      Toast.makeText(ChatActivity.this, "发送信息不能为空", Toast.LENGTH_SHORT).show();
    }
    //清空text
    msgText.setText("");
  }
});

以下是修改心情的实现,在自建客户端修改心情,Spark端会即时修改;

主要代码:

myMood = ((EditText)myMoodView.findViewById(R.id.myMood)).getText().toString().trim();  
                    System.out.println("我更改的心情是:"+myMood);  
                    XmppService.changeStateMessage(connection, myMood);  
                    myStatusText.setText(myMood);  
/**   
 * 修改心情   
 * @param connection   
 * @param status   
 */    
public static void changeStateMessage(final XMPPConnection connection,final String status)    
{    
    Presence presence = new Presence(Presence.Type.available);    
    presence.setStatus(status);    
    connection.sendPacket(presence);        
}

以上就是我写的QQ的主要实现,个人的简单作品,不足之处请多执教,欢迎交流。源码下载地址:http://download.csdn.net/detail/yuanqihesheng/5322946

本文转自:http://blog.csdn.net/yuanqihesheng/article/details/8875769

版权声明:部分文章、图片等内容为用户发布或互联网整理而来,仅供学习参考。如有侵犯您的版权,请联系我们,将立刻删除。
喜欢 (1)
仿微信聊天软件开发
点击这里给我发消息