Android基于XMPP Smack Openfire开发IM(5)发送消息

这节到重点了,看看发送消息的实现,代码写的很简单,主要为了演示功能的实现,


废话不说了。

在登陆以后应该建立一个监听消息的监听器,用来监听收到的消息:

这里收到消息后,通过广播将消息发送到需要的地方,比如聊天的activity,当然不一定用广播,

private Handler handler = new Handler(){
		public void handleMessage(android.os.Message m) {
			Message msg=new Message();
			msg=(Message) m.obj;
			//把从服务器获得的消息通过广播发送
			Intent intent = new Intent("org.yhn.mes");
			String[] message=new String[]{
					msg.getFrom(),
					msg.getBody()};
			intent.putExtra("message", message);
			MainActivity.this.sendBroadcast(intent);
		};
	};
	
	/** message listener*/
	class MyChatManagerListener implements ChatManagerListener {
		public void chatCreated(Chat chat, boolean arg1) {
			chat.addMessageListener(new MessageListener(){
				public void processMessage(Chat arg0, Message msg) {
					/**通过handler转发消息*/
					android.os.Message m=handler.obtainMessage();
					m.obj=msg;
					m.sendToTarget();
				}
			});
		}

这样就可以收到消息了,可以再openfire服务器端,给所有在线的用户发送一个消息,测试下,这里就不贴图了,


smack中有chat和ChatManager类,可以方便的创建和管理会话,

比如在打开一个好友的聊天窗口时,创建一个和该好友通信的chat


public class ChatActivity extends Activity {
	String account;
	String chatNick;
	public static String chatContents;
	TextView chatTextView;
	
	 public void onCreate(Bundle savedInstanceState) {
	        super.onCreate(savedInstanceState);
	        requestWindowFeature(Window.FEATURE_NO_TITLE);
	        setContentView(R.layout.activity_chat);
	        /** 设置top面板信息*/
	        chatNick=getIntent().getStringExtra("nick");
	        account=getIntent().getStringExtra("account");
	        TextView nick_tv=(TextView) findViewById(R.id.chat_top_nick);
			nick_tv.setText(chatNick);
			
			Button send_btn=(Button) findViewById(R.id.chat_btn_send);
			send_btn.setOnClickListener(new OnClickListener(){
				public void onClick(View arg0) {
					EditText input=(EditText) findViewById(R.id.chat_input);
					String content=input.getText().toString();
					try {
						ChatManager cm = ConnUtil.getConnection().getChatManager();
						Chat chat=cm.createChat(account, new MessageListener(){
							public void processMessage(Chat arg0, Message msg) {
								Log.i("---", msg.getFrom()+"说:"+msg.getBody());
								//添加消息到聊天窗口

							}
						});
						Message m=new Message();
						m.setBody(content);
						chat.sendMessage(m);
					} catch (XMPPException e) {
						e.printStackTrace();
					}
				}
			});
	 }
}

在上边的代码中通过

Message m=new Message();
						m.setBody(content);
						chat.sendMessage(m);
发送消息,

有了chat做什么都方便啦

测试可以用spark,

下面看效果图:




PS:图片显示不完整可在新窗口中查看,或者调整博客配置,嘿嘿。



转载请注明出处:http://blog.csdn.net/Vestigge


评论 31
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值