`

Android之asmack通信客户端

 
阅读更多

 最近用asmack做一个android的手机客户端(openfire做服务器),一开始connect服务器都失败,这个再PC端运行得好好的,一到手机端就卡住了,开局不顺。

    后来问了队友才知道要在c盘sysytem32文件夹的driver文件夹的host文件修改域名映射,终于connect上服务器了。不过,悲剧才刚刚开始,后来出现chat.addMessageListener(...)接收不到消息,阻塞不通,消息都监听不了那还怎么玩。上网查了很久,终于发现“还有”一个消息的方法。

 消息监听代码实现:

Java代码  收藏代码
  1. // 监听消息接收  
  2.         XmppConn.connection.addPacketListener(new PacketListener() {  
  3.   
  4.             public void processPacket(Packet packet) {  
  5.   
  6.                 Message message = (Message) packet;  
  7.   
  8.                 System.out.println("收到消息" + message.toXML());  
  9. },null);  

要问为什么addMessagelistener不管用,说实话,我也不知道,网上说这是asmack的一个bug。

 

好了有了这个方法,实现一对一聊天的基本功能就足够了。

OK,这个手机端不能这么锉吧,然后就添加多人聊天功能,也就是会议吧,这个网上资料多的是,基本都是下面的代码的样子:

Java代码  收藏代码
  1. MultiUserChat.addInvitationListener(connection,  
  2.         new InvitationListener() {  
  3.             public void invitationReceived(Connection conn,  
  4.                     String room, String inviter, String reason,  
  5.                     String password, Message message) {  
  6.                 MultiUserChat multiUserChat = new MultiUserChat(conn,  
  7.                         room);  
  8.                 System.out.println("收到来自 " + inviter  
  9.                         + " 的聊天室邀请。邀请附带内容:" + reason);  
  10.        }  
  11. }  

 原来我就是这么实现的,而且在PC端运行时畅通无阻啊,但是到了android这边,这个想法就太天真了,我发现程序直接把这段代码忽视了!!!思前想后无果,只能用addPacketListener的方式来搞了,直接导致的结果便是苦力~~自己写方法写函数来把接收到的信息解析出来,这里面的工作量不是一般的大。

    至今我还留着这个疑问:为什么许多监听都无效?而且真的是网上说的asmack的bug?为什么android不允许预读取asmack里面的一个叫META-INF里面的文件?

 

=========================

我跟你碰到同样的问题,一对一聊天接收不到信息。用你的方法目前貌似可行。但你的代码没贴全,还要加上  , null);   会议聊天接收功能我用的api一直没出问题,代码如下:muc = new MultiUserChat(Chatting.connection, roomName + "@conference." + hostIP);
// 创建聊天室,进入房间后的nickname
try {
muc.join(account);
} catch (XMPPException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
    ChatPacketListener chatListener = new ChatPacketListener(muc);
muc.addMessageListener(chatListener);

 

 

分享到:
评论

相关推荐

    android应用源码(精)基于asmack开发的Android IM客户端源码

    本资料是关于基于Asmack开发的Android即时通讯(IM)客户端源码,适用于学习和设计参考。Asmack是一个开源的XMPP库,它允许开发者在Android平台上构建实时通信应用,如聊天、群聊、文件传输等功能。下面将详细探讨这...

    xmpp+android+openfire+asmack即时通讯客户端聊天

    3. **Android客户端开发**:在Android上开发XMPP客户端,通常会使用ASMACK库,它是Smack库的一个分支,专为Android优化,处理了Android系统特有的问题,如内存管理和线程模型。ASMACK提供了连接OpenFire服务器、建立...

    android应用源码(精)基于asmack开发的Android开源IM客户端-IT计算机-毕业设计.zip

    该资源是一个针对Android平台的开源即时通讯(IM)客户端源码,主要基于ASMACK库进行开发。ASMACK是一个为Android优化的XMPP(Extensible Messaging and Presence Protocol)库,XMPP是一种开放的通信协议,广泛用于...

    android应用源码(精)基于asmack开发的Android开源IM客户端.zip

    【标题】"基于asmack开发的Android开源IM客户端"是一个Android应用程序源代码,它使用了asmack库来实现即时通讯(IM)功能。Asmack是一个Android平台上的XMPP(Extensible Messaging and Presence Protocol)库,它...

    Android AdXmpp(Openfire+asmack+spark)即时通信.zip

    本项目"Android AdXmpp(Openfire+asmack+spark)即时通信.zip"是一个实现此类功能的源码示例,它结合了Openfire服务器、asmack库以及Spark客户端组件来构建一个完整的IM系统。下面将详细介绍这个项目的组成部分及关键...

    android应用源码精基于asmack开发的Android开源IM客户端.zip

    标题"android应用源码精基于asmack开发的Android开源IM客户端.zip"表明这是一个关于Android即时通讯(IM)应用的源代码包,它使用了asmack库进行开发。asmack是一个针对Android平台优化的Smack库实现,Smack是一个...

    安卓Android源码——(精)基于asmack开发的开源IM客户端.zip

    【标题】"安卓Android源码——(精)基于asmack开发的开源IM客户端.zip" 提供的是一个基于asmack库开发的开源即时通讯(IM)客户端的源代码。ASMack是一个专门为Android平台优化的XMPP(Extensible Messaging and ...

    openfire+asmack中文api+androidDemo

    **ASMACK** 是Smack库的Android优化版本,Smack是一个开源的XMPP客户端库,用于Java环境。ASMACK使得Android开发者可以方便地集成XMPP功能,如发送和接收消息、处理在线状态等。`Smack帮助文档中文版.rar`包含的文档...

    asmack-android-16-source-beem.zip

    开发者可以通过研究这些源代码来学习如何在Android平台上实现XMPP协议,以及Beem是如何利用Asmack实现其复杂的通信功能的。这不仅对理解Asmack的工作原理有益,也有助于自定义或扩展Beem应用程序。

    android应用源码(精)基于asmack开发的Android开源IM客户端.rar

    《基于ASMACK开发的Android开源IM客户端源码详解》 在移动通信领域,即时通讯(Instant Messaging,简称IM)已经成为用户日常交流的重要工具。本文将深入探讨一款基于ASMACK库开发的Android开源IM客户端源码,帮助...

    xmpp android asmack 即时通讯

    在Android平台上实现XMPP服务,开发者通常会借助于ASMACK库,因为原生的JavaXMPP库Jabber开源项目并不完全适合移动设备的性能和内存限制。 **XMPP协议概述** XMPP的核心设计是基于客户端-服务器模型,它允许用户...

    Adroid asmack 登录 通信 群组会话

    在提供的压缩包文件名"Xmpp"中,可能包含了示例代码或资源文件,用于演示如何在Android应用中使用ASMack库与OpenFire服务器进行通信。你可以通过这些代码了解实际项目的实现细节,进一步学习和理解Android即时通讯的...

    Android XMPP例子(Openfire+asmack+spark)

    Android XMPP例子(Openfire+asmack+spark)是一个典型的基于Android平台的即时通讯(Instant Messaging,IM)应用实现,利用了XMPP协议、Openfire服务器、asmack库以及Spark客户端工具。XMPP(Extensible Messaging ...

    Android平台的即时通信API接口ASmack

    ASmack是专门为Android平台设计的一个开源库,用于实现即时通信功能。它是一个基于XMPP(Extensible Messaging and Presence Protocol)协议的客户端库,允许开发者在Android应用中集成聊天、群聊、推送通知等多种...

    asmack-android-7_asmack的android7.0的jar包

    【asmack-android-7_asmack的android7.0的jar包】 ASMack是一个开源的、针对Android平台的XMPP(Extensible Messaging and Presence Protocol)库。XMPP是一种基于XML的实时通信协议,常用于即时通讯应用,如聊天、...

    Android AdXmpp(Openfire+asmack+spark)即时通信-IT计算机-毕业设计.zip

    Spark是另一个基于Smack的开源IM客户端,虽然主要用于桌面环境,但其源代码对于理解如何在Android上使用asmack进行即时通信设计具有很高的参考价值。开发者可以借鉴Spark的界面设计和交互逻辑,为Android应用构建...

    asmack-android-16jar包

    总而言之,asmack-android-16.jar是Android开发者实现XMPP推送服务的一个强大工具,它简化了客户端的实现,使得实时通信成为可能,从而提升应用的互动性和用户体验。对于那些需要在Android应用中实现推送功能的...

    安卓Android源码——AdXmpp(Openfire+asmack+spark)即时通信.zip

    在AdXmpp项目中,Asmack负责处理Android客户端与Openfire服务器之间的连接、数据传输和事件监听,使开发者能够轻松集成即时通信功能。 3. **Spark**:Spark是一款桌面端的XMPP客户端软件,它使用Java Swing开发,...

Global site tag (gtag.js) - Google Analytics