简介

这是一个完整的xmpp的Android的项目
服务端使用openfire3.9.3
客户端使用Android4.2.2

集成第三方:
百度地图sdk
asmack.jar
universal-image-loader-1.9.3.jar

项目地址

https://github.com/mozhenhau/D3Xmpp

功能

    1. 注册登录会员
    2. 会员个人资料修改
    3. 基本聊天
    4. 语音、图片、表情、动态表情、发送位置聊天(位置需要注册百度api)
    5. 群聊(openfire需要安装插件)
    6. 位置共享(实验功能,openfire需要安装插件)
    7. 项目结构

      包及其类的作用:

      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.jar

      4.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聊天项目的更多相关文章

  1. 宠物连连看2完整Android代码项目

    宠物连连看2完整代码,该源代码支持多种风格的连连看游戏的,如有国旗类的连连看,还有宠物连连看的等,主要的功能实现了无尽关卡挑战模式.还有催命倒计时,以及链接提示,暂停.多样图片集,挑战眼力和速度等,而 ...

  2. Android 的开源电话/通讯/IM聊天项目全集

    一.Android的XMPP客户端 Beem Beem 是一个运行于 Android 手机平台的 XMPP (jabber) 的客户端软件,兼容标准的 XMPP 服务器和服务,例如 Ejabberd, ...

  3. Android开源项目分类汇总

    目前包括: Android开源项目第一篇——个性化控件(View)篇   包括ListView.ActionBar.Menu.ViewPager.Gallery.GridView.ImageView. ...

  4. GitHub上史上最全的Android开源项目分类汇总 (转)

    GitHub上史上最全的Android开源项目分类汇总 标签: github android 开源 | 发表时间:2014-11-23 23:00 | 作者:u013149325 分享到: 出处:ht ...

  5. GitHub 优秀的 Android 开源项目(转)

    今天查找资源时看到的一篇文章,总结了很多实用资源,十分感谢原作者分享. 转自:http://blog.csdn.net/shulianghan/article/details/18046021 主要介 ...

  6. Android开源项目汇总【转】

    主要介绍那些不错个性化的View,包括ListView.ActionBar.Menu.ViewPager.Gallery.GridView.ImageView.ProgressBar.TextView ...

  7. GitHub上史上最全的Android开源项目分类汇总

    今天在看博客的时候,无意中发现了 @Trinea 在GitHub上的一个项目 Android开源项目分类汇总 ,由于类容太多了,我没有一个个完整地看完,但是里面介绍的开源项目都非常有参考价值,包括很炫 ...

  8. GitHub 优秀的 Android 开源项目

    转自:http://blog.csdn.net/shulianghan/article/details/18046021 主要介绍那些不错个性化的View,包括ListView.ActionBar.M ...

  9. Android 开源项目分类汇总(转)

    Android 开源项目分类汇总(转) ## 第一部分 个性化控件(View)主要介绍那些不错个性化的 View,包括 ListView.ActionBar.Menu.ViewPager.Galler ...

随机推荐

  1. [BZOJ 1801] [Ahoi2009]chess 中国象棋 【DP】

    题目链接:BZOJ - 1801 题目分析 对于50%的数据是可以直接状压 DP 的. 对于100%的数据,使用递推的 DP .(或者这只叫递推不叫 DP ?) 可以发现,每一行和每一列的棋子个数不能 ...

  2. [BZOJ 1874] [BeiJing2009 WinterCamp] 取石子游戏 【博弈论 | SG函数】

    题目链接:BZOJ - 1874 题目分析 这个是一种组合游戏,是许多单个SG游戏的和. 就是指,总的游戏由许多单个SG游戏组合而成,每个SG游戏(也就是每一堆石子)之间互不干扰,每次从所有的单个游戏 ...

  3. IOS中用模型取代字典的好处

    使用字典的坏处 一般情况下,设置数据和取出数据都是用“字符串类型的key”,编写这些key时,编译器不会有任何友情提示,需要手敲 dict[@“name”]=@“Kevin”; NSString *n ...

  4. 使用SSH代理上IPV6(使用SSH端口转发)

    这几个月在国外待着,一直担心我的六维账户怎么办,那可是个宝贝啊.我看网上说可以用六飞啊神马的在IPV6下上IPV6的网站,但是冒失现在六维封禁了非学校的IPV6地址,所以这些软件就不顶用了. 想到以前 ...

  5. Light OJ 1025 - The Specials Menu(区间DP)

    题目大意:     给你一个字符串,问有多少种方法删除字符,使得剩下的字符是回文串. 有几个规定: 1.空串不是回文串 2.剩下的字符位置不同也被视为不同的回文串.如:AA有三种回文串 A, A, A ...

  6. POJ 2289 Jamie's Contact Groups(多重匹配+二分)

    题意: Jamie有很多联系人,但是很不方便管理,他想把这些联系人分成组,已知这些联系人可以被分到哪个组中去,而且要求每个组的联系人上限最小,即有一整数k,使每个组的联系人数都不大于k,问这个k最小是 ...

  7. (转载)HTML--- input type=hidden

    (转载)http://www.blogjava.net/lansky07/archive/2007/04/05/108740.html HTML--- input type=hidden 关于< ...

  8. HDOJ 2015 偶数求和

    Problem Description 有一个长度为n(n<=100)的数列,该数列定义为从2开始的递增有序偶数,现在要求你按照顺序每m个数求出一个平均值,如果最后不足m个,则以实际数量求平均值 ...

  9. UVa11248 Frequency Hopping(最大流+最小割)

    题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=33206 [思路] 最大流最小割. 可以确定的是如果不可行需要修改的 ...

  10. Prime Ring Problem(搜索)

    http://acm.hdu.edu.cn/showproblem.php?pid=1016 / 题意; 给你一个数n ,求出所有的排列 这些排列的特征是任意相邻的两数只和是素数,而且首位只和也是素数 ...