zoukankan      html  css  js  c++  java
  • 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--------"+"
    "+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的安卓版而已

    我们在用这个来测试一下

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

    用户给我们发送的数据!

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

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

  • 相关阅读:
    The resource identified by this request is only capable of generating responses with characteristics
    javaweb写的在线聊天应用
    JavaScript写一个拼图游戏
    jQ插件--时间线插件和拖拽API
    Javascript写俄罗斯方块游戏
    详解jQ的support模块
    磁盘IO的性能指标 阻塞与非阻塞、同步与异步 I/O模型
    Airflow Python工作流引擎的重要概念介绍
    DEVOPS 运维开发系列
    MYSQL 两表 排除 重复记录
  • 原文地址:https://www.cnblogs.com/lfk-dsk/p/4412126.html
Copyright © 2011-2022 走看看