上一次我们拿到了服务器端的组数据和用户信息,这就可以为我们日后使用好友系统打下基础了!
但是光是拿到了这些东西我们怎么能够满足呢?我们一个即时通讯软件最重要的不就是要能够通讯么!所以我们下一步就要接受别人发来的数据。1 public static void findMan(){ 2 System.out.println("--------find start----------"); 3 Roster roster = connect.con.getRoster(); //Roster表示一个用户的所有好友清单以及申请加好友的用户清单 4 Collection<RosterGroup> entriesGroup = roster.getGroups();//获得组信息 5 System.out.println("team:"+entriesGroup.size()); 6 for(RosterGroup group: entriesGroup){ 7 Collection<RosterEntry> entries = group.getEntries(); 8 System.out.println("--------groupName--------"+"\n"+group.getName());//循环打印组名和人名 9 for (RosterEntry entry : entries) { 10 System.out.println("name:"+entry.getName()); 11 } 12 } 13 System.out.println("--------find end--------"); 14 ChatManager chatManager = connect.con.getChatManager();
chatManager.addChatListener(new MyChatManagerListener());
}
注意到我们在上回的工具类的里面的findMan()函数里面添加了两行,这两行的功能就是注册了一个消息的监听器并把它设置为监听状态。但这个MyChatManagerListener()咱们还没有写哦!
1 static class MyChatManagerListener implements ChatManagerListener { 2 public void chatCreated(Chat chat, boolean arg1) { 3 chat.addMessageListener(new MessageListener(){ 4 @Override 5 public void processMessage(Chat chat, Message msg) { 6 android.os.Message m=handler.obtainMessage(); 7 m.obj=msg; 8 m.sendToTarget();//送入handle 9 } 10 }); 11 } 12 }
我们重写了MyChatManagerListener()实现一个ChatManageListener()的接口,在里面写一个聊天创建的函数添加监听,新建一个Message(这个Message是系统自带的)把接收收到的msg(这个Message并不是系统自带的)放进去传入Handle进行一些显示的操作。
1 private static Handler handler = new Handler(){ 2 public void handleMessage(android.os.Message m) { 3 Message msg=new Message(); 4 msg=(Message) m.obj; 5 String[] message=new String[]{ msg.getFrom(), msg.getBody()}; 6 System.out.println("==========收到消息 From:==========="+message[0].toString()); 7 System.out.println("==========收到消息 say:===========" + message[1].toString()); 8 } 9 };
当Message送入handle后在新建一个不是系统自带的Message把接到东西放去然后新建字符串数组,把第一个放入头(传入的用户名),第二个放入体(发送的用户信息)并且打印出来在日志中。
我们先用服务器来试一下,openfire有一个服务器发送消息的功能,我们发送“蛤蛤”好了!
于是我们就能在服务器里面看到这条服务器广播了!
openfire的官网里面还能找到这样的一个软件,也要下载安装,对于测试很有帮助,还有就是其实我们的开发就是在实现一个Spark的安卓版而已
我们在用这个来测试一下
效果就出来了,我们不但能接收服务器的广播,也能接受其他的
用户给我们发送的数据!
今天就写到这里了,在这里我们实现了如何接收其他人的发送数据,在下一个文章中我们要实现如何发送数据,这就是我们即时通讯的功能的初步实现了,好期待啊!
(能用得上话的话求点赞=-=,我表达不好的话跟我说哦)