Android 基于xmpp协议,smack包,openfire服务端的高仿QQ的即时通讯实现【5】消息发送,接收;修改心情的实现

5 篇文章 0 订阅
4 篇文章 0 订阅

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


接收消息主要代码:

//消息监听
		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

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值