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通过模块化开发优化代码的技巧分享

《Python通过模块化开发优化代码的技巧分享》模块化开发就是把代码拆成一个个“零件”,该封装封装,该拆分拆分,下面小编就来和大家简单聊聊python如何用模块化开发进行代码优化吧... 目录什么是模块化开发如何拆分代码改进版:拆分成模块让模块更强大:使用 __init__.py你一定会遇到的问题模www.

Spring Security基于数据库的ABAC属性权限模型实战开发教程

《SpringSecurity基于数据库的ABAC属性权限模型实战开发教程》:本文主要介绍SpringSecurity基于数据库的ABAC属性权限模型实战开发教程,本文给大家介绍的非常详细,对大... 目录1. 前言2. 权限决策依据RBACABAC综合对比3. 数据库表结构说明4. 实战开始5. MyBA

使用Python开发一个简单的本地图片服务器

《使用Python开发一个简单的本地图片服务器》本文介绍了如何结合wxPython构建的图形用户界面GUI和Python内建的Web服务器功能,在本地网络中搭建一个私人的,即开即用的网页相册,文中的示... 目录项目目标核心技术栈代码深度解析完整代码工作流程主要功能与优势潜在改进与思考运行结果总结你是否曾经

Android中Dialog的使用详解

《Android中Dialog的使用详解》Dialog(对话框)是Android中常用的UI组件,用于临时显示重要信息或获取用户输入,本文给大家介绍Android中Dialog的使用,感兴趣的朋友一起... 目录android中Dialog的使用详解1. 基本Dialog类型1.1 AlertDialog(

Spring Boot + MyBatis Plus 高效开发实战从入门到进阶优化(推荐)

《SpringBoot+MyBatisPlus高效开发实战从入门到进阶优化(推荐)》本文将详细介绍SpringBoot+MyBatisPlus的完整开发流程,并深入剖析分页查询、批量操作、动... 目录Spring Boot + MyBATis Plus 高效开发实战:从入门到进阶优化1. MyBatis

Python基于wxPython和FFmpeg开发一个视频标签工具

《Python基于wxPython和FFmpeg开发一个视频标签工具》在当今数字媒体时代,视频内容的管理和标记变得越来越重要,无论是研究人员需要对实验视频进行时间点标记,还是个人用户希望对家庭视频进行... 目录引言1. 应用概述2. 技术栈分析2.1 核心库和模块2.2 wxpython作为GUI选择的优

利用Python开发Markdown表格结构转换为Excel工具

《利用Python开发Markdown表格结构转换为Excel工具》在数据管理和文档编写过程中,我们经常使用Markdown来记录表格数据,但它没有Excel使用方便,所以本文将使用Python编写一... 目录1.完整代码2. 项目概述3. 代码解析3.1 依赖库3.2 GUI 设计3.3 解析 Mark

Android Kotlin 高阶函数详解及其在协程中的应用小结

《AndroidKotlin高阶函数详解及其在协程中的应用小结》高阶函数是Kotlin中的一个重要特性,它能够将函数作为一等公民(First-ClassCitizen),使得代码更加简洁、灵活和可... 目录1. 引言2. 什么是高阶函数?3. 高阶函数的基础用法3.1 传递函数作为参数3.2 Lambda

Linux上设置Ollama服务配置(常用环境变量)

《Linux上设置Ollama服务配置(常用环境变量)》本文主要介绍了Linux上设置Ollama服务配置(常用环境变量),Ollama提供了多种环境变量供配置,如调试模式、模型目录等,下面就来介绍一... 目录在 linux 上设置环境变量配置 OllamPOgxSRJfa手动安装安装特定版本查看日志在

利用Go语言开发文件操作工具轻松处理所有文件

《利用Go语言开发文件操作工具轻松处理所有文件》在后端开发中,文件操作是一个非常常见但又容易出错的场景,本文小编要向大家介绍一个强大的Go语言文件操作工具库,它能帮你轻松处理各种文件操作场景... 目录为什么需要这个工具?核心功能详解1. 文件/目录存javascript在性检查2. 批量创建目录3. 文件