openfire+asmack搭建的安卓即时通讯(三) 15.4.9

(能用得上话的话求点赞=-=,我表达不好的话跟我说哦)

上一次我们拿到了服务器端的组数据和用户信息,这就可以为我们日后使用好友系统打下基础了!

但是光是拿到了这些东西我们怎么能够满足呢?我们一个即时通讯软件最重要的不就是要能够通讯么!所以我们下一步就要接受别人发来的数据。
 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的安卓版而已

我们在用这个来测试一下

效果就出来了,我们不但能接收服务器的广播,也能接受其他的

用户给我们发送的数据!

今天就写到这里了,在这里我们实现了如何接收其他人的发送数据,在下一个文章中我们要实现如何发送数据,这就是我们即时通讯的功能的初步实现了,好期待啊!

(能用得上话的话求点赞=-=,我表达不好的话跟我说哦)

posted @ 2015-04-09 21:14  刘丰恺  阅读(1395)  评论(0编辑  收藏  举报