Android基于XMPP Smack openfire 开发的聊天室(一)【会议服务、聊天室列表、加入】

本文主要是介绍Android基于XMPP Smack openfire 开发的聊天室(一)【会议服务、聊天室列表、加入】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

http://blog.csdn.net/lnb333666/article/details/7476177


公司没事干,组长叫我写Demo,我狂晕....

        先把先说说这个什么聊天室吧,服务器就别说了,典型的拿来主义。用的是成品的openfire。说道smack,这个是一个jar文件,库,是用在javae的。要想在android端使用这个,就要用到asmack包,这个可以在官网下。其实里边跟smack包没什么区别,具体差异目前我没发现。

        可能有的朋友说这个smack是什么用的,我个人一句话,一个已经包装了XMPP协议的架包。提供了API的操作...好了进入正题

 

1,首先想进入聊天室,那必须要先知道聊天室所在的会议服务(下图,用spark截图)

[java]  view plain copy
  1. /** 
  2.      * 初始化聊服务会议列表 
  3.      */  
  4.     private void initHostRoom() {  
  5.         Collection<HostedRoom> hostrooms;  
  6.         try {  
  7.             hostrooms = MultiUserChat.getHostedRooms(Constants.conn,  
  8.                     Constants.conn.getServiceName());  
  9.             for (HostedRoom entry : hostrooms) {  
  10.                 roominfos.add(entry);  
  11.                 Log.i(TAG, "名字:" + entry.getName() + " - ID:" + entry.getJid());  
  12.             }  
  13.             Log.i(TAG, "服务会议数量:" + roominfos.size());  
  14.         } catch (XMPPException e) {  
  15.             e.printStackTrace();  
  16.         }  
  17.     }  

 

2,获取了那个服务的JID后才能进入会议列表:

[java]  view plain copy
  1. /** 
  2.      * 初始化房间列表 
  3.      */  
  4.     public void init() {  
  5.         listDiscoverItems = new ArrayList<DiscoverItems.Item>();  
  6.         // 获得与XMPPConnection相关的ServiceDiscoveryManager  
  7.         ServiceDiscoveryManager discoManager = ServiceDiscoveryManager  
  8.                 .getInstanceFor(Constants.conn);  
  9.   
  10.         // 获得指定XMPP实体的项目  
  11.         // 这个例子获得与在线目录服务相关的项目  
  12.         DiscoverItems discoItems;  
  13.         try {  
  14.             discoItems = discoManager.discoverItems(jid);  
  15.             // 获得被查询的XMPP实体的要查看的项目  
  16.             Iterator it = discoItems.getItems();  
  17.             // 显示远端XMPP实体的项目  
  18.             while (it.hasNext()) {  
  19.                 DiscoverItems.Item item = (DiscoverItems.Item) it.next();  
  20.                 System.out.println(item.getEntityID());  
  21.                 System.out.println(item.getName());  
  22.                 listDiscoverItems.add(item);  
  23.             }  
  24.         } catch (XMPPException e) {  
  25.             e.printStackTrace();  
  26.         }  
  27.     }  


3,同样,要进入会议房间(聊天室)也要获取它的ID,才能进入

 

[java]  view plain copy
  1. // 后面服务名称必需是创建房间的那个服务  
  2.         jid = getIntent().getStringExtra("jid");  
  3.         try {  
  4.             muc = new MultiUserChat(Constants.conn, jid);  
  5.             // 创建聊天室,进入房间后的nickname(昵称)  
  6.             muc.join("痞子测试");  
  7.             Log.v(TAG, "join success");  
  8.         } catch (XMPPException e) {  
  9.             e.printStackTrace();  
  10.         }  


简单吧!

 

好了,这一篇就到这里,下一篇是聊天室内部的一些处理。


这篇关于Android基于XMPP Smack openfire 开发的聊天室(一)【会议服务、聊天室列表、加入】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/335491

相关文章

Python实例题之pygame开发打飞机游戏实例代码

《Python实例题之pygame开发打飞机游戏实例代码》对于python的学习者,能够写出一个飞机大战的程序代码,是不是感觉到非常的开心,:本文主要介绍Python实例题之pygame开发打飞机... 目录题目pygame-aircraft-game使用 Pygame 开发的打飞机游戏脚本代码解释初始化部

使用Python开发一个现代化屏幕取色器

《使用Python开发一个现代化屏幕取色器》在UI设计、网页开发等场景中,颜色拾取是高频需求,:本文主要介绍如何使用Python开发一个现代化屏幕取色器,有需要的小伙伴可以参考一下... 目录一、项目概述二、核心功能解析2.1 实时颜色追踪2.2 智能颜色显示三、效果展示四、实现步骤详解4.1 环境配置4.

SpringBoot服务获取Pod当前IP的两种方案

《SpringBoot服务获取Pod当前IP的两种方案》在Kubernetes集群中,SpringBoot服务获取Pod当前IP的方案主要有两种,通过环境变量注入或通过Java代码动态获取网络接口IP... 目录方案一:通过 Kubernetes Downward API 注入环境变量原理步骤方案二:通过

Python使用smtplib库开发一个邮件自动发送工具

《Python使用smtplib库开发一个邮件自动发送工具》在现代软件开发中,自动化邮件发送是一个非常实用的功能,无论是系统通知、营销邮件、还是日常工作报告,Python的smtplib库都能帮助我们... 目录代码实现与知识点解析1. 导入必要的库2. 配置邮件服务器参数3. 创建邮件发送类4. 实现邮件

如何搭建并配置HTTPD文件服务及访问权限控制

《如何搭建并配置HTTPD文件服务及访问权限控制》:本文主要介绍如何搭建并配置HTTPD文件服务及访问权限控制的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、安装HTTPD服务二、HTTPD服务目录结构三、配置修改四、服务启动五、基于用户访问权限控制六、

Android学习总结之Java和kotlin区别超详细分析

《Android学习总结之Java和kotlin区别超详细分析》Java和Kotlin都是用于Android开发的编程语言,它们各自具有独特的特点和优势,:本文主要介绍Android学习总结之Ja... 目录一、空安全机制真题 1:Kotlin 如何解决 Java 的 NullPointerExceptio

基于Python开发一个有趣的工作时长计算器

《基于Python开发一个有趣的工作时长计算器》随着远程办公和弹性工作制的兴起,个人及团队对于工作时长的准确统计需求日益增长,本文将使用Python和PyQt5打造一个工作时长计算器,感兴趣的小伙伴可... 目录概述功能介绍界面展示php软件使用步骤说明代码详解1.窗口初始化与布局2.工作时长计算核心逻辑3

python web 开发之Flask中间件与请求处理钩子的最佳实践

《pythonweb开发之Flask中间件与请求处理钩子的最佳实践》Flask作为轻量级Web框架,提供了灵活的请求处理机制,中间件和请求钩子允许开发者在请求处理的不同阶段插入自定义逻辑,实现诸如... 目录Flask中间件与请求处理钩子完全指南1. 引言2. 请求处理生命周期概述3. 请求钩子详解3.1

Python中合并列表(list)的六种方法小结

《Python中合并列表(list)的六种方法小结》本文主要介绍了Python中合并列表(list)的六种方法小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋... 目录一、直接用 + 合并列表二、用 extend() js方法三、用 zip() 函数交叉合并四、用

如何基于Python开发一个微信自动化工具

《如何基于Python开发一个微信自动化工具》在当今数字化办公场景中,自动化工具已成为提升工作效率的利器,本文将深入剖析一个基于Python的微信自动化工具开发全过程,有需要的小伙伴可以了解下... 目录概述功能全景1. 核心功能模块2. 特色功能效果展示1. 主界面概览2. 定时任务配置3. 操作日志演示