Android基于XMPP Smack openfire 开发的聊天室(一)【会议服务、聊天室列表、加入】
来源:互联网 发布:b2b项目源码 编辑:程序博客网 时间:2024/05/20 04:30
废话少说,公司没事干,组长叫我写Demo,我狂晕....
先把先说说这个什么聊天室吧,服务器就别说了,典型的拿来主义。用的是成品的openfire。说道smack,这个是一个jar文件,库,是用在javae的。要想在android端使用这个,就要用到asmack包,这个可以在官网下。其实里边跟smack包没什么区别,具体差异目前我没发现。
可能有的朋友说这个smack是什么用的,我个人一句话,一个已经包装了XMPP协议的架包。提供了API的操作...好了进入正题
1,首先想进入聊天室,那必须要先知道聊天室所在的会议服务(下图,用spark截图)
/** * 初始化聊服务会议列表 */private void initHostRoom() {Collection<HostedRoom> hostrooms;try {hostrooms = MultiUserChat.getHostedRooms(Constants.conn,Constants.conn.getServiceName());for (HostedRoom entry : hostrooms) {roominfos.add(entry);Log.i(TAG, "名字:" + entry.getName() + " - ID:" + entry.getJid());}Log.i(TAG, "服务会议数量:" + roominfos.size());} catch (XMPPException e) {e.printStackTrace();}}
2,获取了那个服务的JID后才能进入会议列表:
/** * 初始化房间列表 */public void init() {listDiscoverItems = new ArrayList<DiscoverItems.Item>();// 获得与XMPPConnection相关的ServiceDiscoveryManagerServiceDiscoveryManager discoManager = ServiceDiscoveryManager.getInstanceFor(Constants.conn);// 获得指定XMPP实体的项目// 这个例子获得与在线目录服务相关的项目DiscoverItems discoItems;try {discoItems = discoManager.discoverItems(jid);// 获得被查询的XMPP实体的要查看的项目Iterator it = discoItems.getItems();// 显示远端XMPP实体的项目while (it.hasNext()) {DiscoverItems.Item item = (DiscoverItems.Item) it.next();System.out.println(item.getEntityID());System.out.println(item.getName());listDiscoverItems.add(item);}} catch (XMPPException e) {e.printStackTrace();}}
3,同样,要进入会议房间(聊天室)也要获取它的ID,才能进入
// 后面服务名称必需是创建房间的那个服务jid = getIntent().getStringExtra("jid");try {muc = new MultiUserChat(Constants.conn, jid);// 创建聊天室,进入房间后的nickname(昵称)muc.join("痞子测试");Log.v(TAG, "join success");} catch (XMPPException e) {e.printStackTrace();}
简单吧!
好了,这一篇就到这里,下一篇是聊天室内部的一些处理。
- Android基于XMPP Smack openfire 开发的聊天室(一)【会议服务、聊天室列表、加入】
- Android基于XMPP Smack openfire 开发的聊天室(一)【会议服务、聊天室列表、加入】
- Android基于XMPP Smack openfire 开发的聊天室(一)【会议服务、聊天室列表、加入】
- Android基于XMPP Smack openfire 开发的聊天室(一)【会议服务、聊天室列表、加入】
- Android基于XMPP Smack openfire 开发的聊天室(一)【会议服务、聊天室列表、加入】
- Android基于XMPP Smack openfire 开发的聊天室(一)
- Android基于XMPP Smack openfire 开发的聊天室(一)
- Android基于XMPP Smack openfire 开发的聊天室(六) 【加入房间、权限错误】
- Android基于XMPP Smack openfire 开发的聊天室(六) 【加入房间、权限错误】
- Android基于XMPP Smack openfire 开发的聊天室(六) 【加入房间、权限错误】
- Android基于XMPP Smack openfire 开发的聊天室(六) 【加入房间、权限错误】
- Android基于XMPP Smack openfire 开发的聊天室(六) 【加入房间、权限错误】
- Android基于XMPP Smack openfire 开发的聊天室
- Android基于XMPP Smack openfire 开发的聊天室
- Android基于XMPP Smack openfire 开发的聊天室
- Android基于XMPP Smack openfire 开发的聊天室(二) 【聊天信息、成员】
- Android基于XMPP Smack openfire 开发的聊天室(三) 【新旧记录、踢人】
- Android基于XMPP Smack openfire 开发的聊天室(四) 【创建房间、表单;报文】
- 如何在pro文件中添加库文件(Qt for symbian)
- AS3中数据深复制
- 浅谈ANR及log分析ANR
- 值得关注的新技术(随时更新)
- 深入理解C语言指针的奥秘
- Android基于XMPP Smack openfire 开发的聊天室(一)【会议服务、聊天室列表、加入】
- volatile作用
- WinCE系统下基于DirectShow的摄像头应用编程
- adb push的Permission denied
- 传智播客广州中心举行2周年庆典——时间:2012年5月6日
- error C2664: “gluNurbsCallback”: 不能将参数 3 从“void (__stdcall *)(GLenum)”转换为“void (__stdcall *)(void)”
- 五大最受欢迎的BUG管理系统
- Windows Media Services 流媒体服务器架设教程
- 移动图片