用XMPP实现完整Android聊天项目
简介
这是一个完整的xmpp的Android的项目
服务端使用openfire3.9.3
客户端使用Android4.2.2
集成第三方:
百度地图sdk
asmack.jar
universal-image-loader-1.9.3.jar
项目地址
https://github.com/mozhenhau/D3Xmpp
功能
- 注册登录会员
- 会员个人资料修改
- 基本聊天
- 语音、图片、表情、动态表情、发送位置聊天(位置需要注册百度api)
- 群聊(openfire需要安装插件)
- 位置共享(实验功能,openfire需要安装插件)
项目结构

包及其类的作用:
1.activites和fragments
activites和fragments放的类是一样的,是放activity和fragment的。作用是android的Controller层。
BaseActivity—— 一切activity的基类,继承了D3Activity。主要是实现注解实例化
ChangePwdActivity—— 修改密码页
ChatActivity—— 聊天页。Intent必须参数chatName(聊天对象,单聊为对方id,群聊为群名称),
可选参数chattype。chatType有单聊和群聊两个参数,不传则默认单聊。
ChoseActivity—- 群组邀请页面。Intent必须参数roomName和成员members
CropImageActivity—- 截图页面。isAutoSend为true时自动截图
FriendActivity—- 好友详情页。必须参数username
LoginActivity—- 登陆页。
MainActivity—- 主页。使用fragments包住四个TAB页面
MapActivity—- 地图页. 从聊天页的位置跳到此页面。必须参数lat,lon
MyRoomActivity—- 我的群组页
NewFriendActivity—- 我的新好友申请页
PicSrcPickerActivity—- 弹出选择选图方式。拍照和图库
RegActivity—- 注册页
RoomMemActivity—- 群组成员
SearchActivity—- 搜索好友页
ShowPicActivitiy—- 展示大图页
TempActivity—- 模板类,方便我复制生成一个新类而已
WebActivity—- 一个全屏的webview//fragment
AdrFragment—- 位置页.
原理:登录后的用户,每分钟上传一次自己的位置,如果下线则删除自己的位置。
登陆后的用户,每分钟更新一次自己好友的位置,如果对方在线则在百度地图中渲染出红点。
如果取消共享位置,则关闭以上功能MsgFragment—- “首页”消息
原理:登录后的用户,通过XmppMessageInterceptor和XmppMessageListener两个类拦截自己发出和接收到的消息,拦截消息后更新到MsgFragment显示出来。ContactFragment—- 通讯录页
原理:登录后的用户,通过XmppPresenceInterceptor和XmppPresenceListener两个类拦截自己发出和接收到的好友状态消息,拦截状态消息后更新到这里。
MeFragment—- “我的”页
2. com.d3.d3xmpp.adapter
主要存放activity和fragment对应的list适配。懂android的都知道
3.com.d3.d3xmpp.constant
存放配置类,有三个:
com.d3.d3xmpp.constant. Constants类是常用的配置
com.d3.d3xmpp.constant. MyApplication类是全局Application,方便管理android
com.d3.d3xmpp.constant. ImgConfig是图片类,用于优化图片加载,使用的universal-image-loader-1.9.3.jar4.com.d3.d3xmpp.dao 和 com.d3.d3xmpp.model
是属于MVC模式中的Model。
dao负责获取数据库的数据,并返回给Activity
model是基础数据类5.com.d3.d3xmpp.d3View 和 com.d3.d3xmpp.util
这是私人框架,集成了android开发中常用的一些方法及View。
包括录音按钮RecordButton,加入了下拉刷新的MyListView,实现了注解实例view的D3Activity等等。6.com.d3.d3xmpp.xmpp(xmpp的核心)
:
其他都是安卓开发者必须懂的东西。下面说xmpp类的作用

XmppConnectionListerner是xmpp的连接状态的listener,比如断线等
XmppMessageInterceptor是发出消息的listener,在此拦截并持久化聊天纪录
XmppMessageListener是收到消息的listener,在此拦截并持久化聊天纪录
XmppPresenceInterceptor是本机发出好友消息的监听,比如添加好友,删除好友
XmppPresenceListener是本机收到好友消息的监听,比如添加好友,删除好友
XmppConnection是xmpp基本操作的核心类,包括登录,注册,聊天,修改密码,好友管理,群组管理等等。PS:
该项目是本人在学习xmpp过程中总结的一些东西,代码组织凌乱,旨在帮助新入门xmpp学习xmpp的基本使用
用XMPP实现完整Android聊天项目的更多相关文章
- 宠物连连看2完整Android代码项目
宠物连连看2完整代码,该源代码支持多种风格的连连看游戏的,如有国旗类的连连看,还有宠物连连看的等,主要的功能实现了无尽关卡挑战模式.还有催命倒计时,以及链接提示,暂停.多样图片集,挑战眼力和速度等,而 ...
- Android 的开源电话/通讯/IM聊天项目全集
一.Android的XMPP客户端 Beem Beem 是一个运行于 Android 手机平台的 XMPP (jabber) 的客户端软件,兼容标准的 XMPP 服务器和服务,例如 Ejabberd, ...
- Android开源项目分类汇总
目前包括: Android开源项目第一篇——个性化控件(View)篇 包括ListView.ActionBar.Menu.ViewPager.Gallery.GridView.ImageView. ...
- GitHub上史上最全的Android开源项目分类汇总 (转)
GitHub上史上最全的Android开源项目分类汇总 标签: github android 开源 | 发表时间:2014-11-23 23:00 | 作者:u013149325 分享到: 出处:ht ...
- GitHub 优秀的 Android 开源项目(转)
今天查找资源时看到的一篇文章,总结了很多实用资源,十分感谢原作者分享. 转自:http://blog.csdn.net/shulianghan/article/details/18046021 主要介 ...
- Android开源项目汇总【转】
主要介绍那些不错个性化的View,包括ListView.ActionBar.Menu.ViewPager.Gallery.GridView.ImageView.ProgressBar.TextView ...
- GitHub上史上最全的Android开源项目分类汇总
今天在看博客的时候,无意中发现了 @Trinea 在GitHub上的一个项目 Android开源项目分类汇总 ,由于类容太多了,我没有一个个完整地看完,但是里面介绍的开源项目都非常有参考价值,包括很炫 ...
- GitHub 优秀的 Android 开源项目
转自:http://blog.csdn.net/shulianghan/article/details/18046021 主要介绍那些不错个性化的View,包括ListView.ActionBar.M ...
- Android 开源项目分类汇总(转)
Android 开源项目分类汇总(转) ## 第一部分 个性化控件(View)主要介绍那些不错个性化的 View,包括 ListView.ActionBar.Menu.ViewPager.Galler ...
随机推荐
- JSP页面的异常处理<转>
对于jsp页面错误处理这里大致有两种方式:一.在Web.xml中配置全局的错误异常处理 即凡是该项目下(即虚拟路径下的所有文件)的任意一个文件错误或者异常,都会跳到指定的错误处理页面. ...
- 1710: [Usaco2007 Open]Cheappal 廉价回文
Description 为 了跟踪所有的牛,农夫JOHN在农场上装了一套自动系统. 他给了每一个头牛一个电子牌号 当牛走过这个系统时,牛的名字将被自动读入. 每一头牛的电子名字是一个长度为M (1 & ...
- 实战weblogic集群之创建节点和集群
一.启动weblogic,访问控制台 weblogic的domain创建完成后,接下来就可以启动它,步骤如下: $ cd /app/sinova/domains/base_domain/bin $ . ...
- SVN服务器搭建(与apache整合)
一.SVN介绍 SVN是一个版本控制工具,Subversion的版本库(repository),就是位于服务器,统一管理和储存数据的地方. 二.SVN数据存储方式 在Subversion中,版本库的数 ...
- 【贪心】Codeforces 704B & 705D Ant Man
题目链接: http://codeforces.com/problemset/problem/704/B 题目大意: 给N个点,起点S终点T,每个点有X,A,B,C,D,根据I和J的X坐标可得I到J的 ...
- bzoj1588 [HNOI2002]营业额统计(Treap)
1588: [HNOI2002]营业额统计 Time Limit: 5 Sec Memory Limit: 162 MBSubmit: 11485 Solved: 4062[Submit][Sta ...
- 使用MockMvc编写spring boot的controller的测试用例
springboot自带测试模块. 注解需要: @SpringApplicationConfiguration(classes = ComputeServiceApplication.class) 这 ...
- poj 4618 暴力
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4618 #include <cstdio> #include <cmath> # ...
- Azkaban2官方配置文档
最近工作实在是太忙了,我把之前翻译的官方的文档先放上来吧,希望对大家有所帮助~ 介绍 Azkaban2新功能: 1.Web UI 2.简单工作流上传 3.更容易设置job的依赖关系 4.调度工作流 5 ...
- JavaScript中的[]和{}
最早开始对js中括号的使用有疑问是在交互2值的时候: a = [b,b=a][0]; 详见JavaScript交换两个变量值的七种解决方案 因为 [[]][0] 的意思是:获取 [[]] 的第一个元素 ...