你的位置:首页 > 操作系统

[操作系统]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的安卓版而已

我们在用这个来测试一下

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

用户给我们发送的数据!

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

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