由于时间原因,所以更新比较慢 ,还请大家谅解,此次是对上篇文章中的安卓客户端初级版本进行的一次更新优化,在这次更新后,就有那么一点样子了,可以拿的出手了,呵呵,还在关注的同学也可以及时下载更新。此次主要更新的内容如下:

1,聊天界面,新消息到来时,聊天界面同步刷新;

2,聊天界面,支持长按聊天记录时删除或复制聊天记录,及清空与该用户的全部聊天记录;

3,消息界面,支持长按某一会话,删除与该用户的会话记录;

4,支持消息未读数量显示(底部导航栏为总未读数,会话记录处为与该用户的聊天的未读消息数);

5,联系人界面,支持好友在线情况实时更新以及好友上下线提示;

6,添加好友时,支持发送自定义验证信息;

7,设置界面,支持自己在线状态修改(在线,隐身,离线等),支持个性签名设置,支持设置消息通知提醒(声音震动等),支持聊天记录及消息列表的清空;

8,退出时弹出退出提示框;

有图为证:

在这里要说明下,个性签名也即心情,在设置过后,查看了下数据库,疑似并没有保存到数据库,因此只有你在线的情况下才会显示你设置过的签名,一旦下线,你的签名就消失了。关于头像显示,xmpp是支持设置头像的,不过就像我上篇文章所讲,局限性很大,包括个性签名,这个在真实的项目中都是要配合web服务器来实现的,所以不必太过纠结,主要还是看消息收发过程的处理。另,在聊天时发送自己当前位置这个功能是可以实现的,只需调用百度地图获取当前坐标即可,不过此次更新并未实现,有兴趣的同学可以实现以下。版本持续更新中,不过下次更新可能会久一点了...

源码地址:http://download.csdn.net/detail/baiyuliang2013/8420339

再次说明一下注意点:在搭建服务端时,服务端名称要设置为你本机IP地址并与客户端XMPP_HOST保持一致如:192.168.x.xxx,(不要设置为127.0.0.1)

	public static final String XMPP_HOST = "192.168.8.229";
	public static final int XMPP_PORT = 5222;

客户端中XMPP_PORT=5222不可修改,这是xmpp固定端口,关于我说的这些注意事项都注意的话,一般是没问题的,另外,这里的源码或多或少会存在许多bug,大家主要参考思路,不能依赖博主的源码,遇到问题可多在网上查找资料搜索答案,才能不断进步,千万不要做拿来主义者!

收不到消息的,或者message.getBody()数组越界的同学,看下你发送消息时是否按照消息格式发送的,消息格式是:发送人&接收人&消息类型&消息内容&...,&为自定义的连接符,那么得到的msgbody也就是这一串字符,其中的信息需要先拆分,如果你只发送消息内容没有按格式来的话就会报错了,上篇文章是有介绍的,如果直接看的是第三篇的同学可以先阅读下第二篇,详细方法请看ChatActivity中sendMsg的几个方法!

*由于目前不再从事xmpp相关工作,时间也多不允许,因此该项目不再更新,对于项目中存在的bug未及时修复,还请大家见谅!大家可以更多的在网上查询相关资料,感谢您的关注!

XMPP(三)-安卓即时通讯客户端的更多相关文章

  1. XMPP之ios即时通讯客户端开发-配置XMPP基本信息之工程代码(五)

    登录功能完成以后包含以下代码文件: AppDelegate.h AppDelegate.m LoginViewController.h LoginViewController.m LoginUser. ...

  2. XMPP之ios即时通讯客户端开发-创建工程添加XMPPFramework及其他框架(三)

    XMPPFramework GitHub: https://github.com/robbiehanson/XMPPFramework 获取源代码 git clone https://github.c ...

  3. XMPP之ios即时通讯客户端开发-配置XMPP基本信息(四)

    前文已经有配置open fire,接下来要通过XMPP框架链接到open fire的服务器: 1.首先要在系统偏好设置里面打开open fire的服务器 2.代码中设置xmpp的myJID 有几个名词 ...

  4. XMPP之ios即时通讯客户端开发-mac上搭建openfire服务器(二)

    come from:http://www.cnblogs.com/xiaodao/archive/2013/04/05/3000554.html 一.下载并安装openfire 1.到http://w ...

  5. openfire+asmack搭建的安卓即时通讯(三) 15.4.9

    (能用得上话的话求点赞=-=,我表达不好的话跟我说哦) 上一次我们拿到了服务器端的组数据和用户信息,这就可以为我们日后使用好友系统打下基础了! 但是光是拿到了这些东西我们怎么能够满足呢?我们一个即时通 ...

  6. openfire+asmack搭建的安卓即时通讯(一) 15.4.7

    最进开始做一些android的项目,除了一个新闻客户端的搭建,还需要一个实现一个即时通讯的功能,参考了很多大神成型的实例,了解到operfire+asmack是搭建简易即时通讯比较方便,所以就写了这篇 ...

  7. XMPP openfire Smack 即时通讯

    重新整理下这篇文章. 这篇文章的主要任务是使用AndroidStudio,通过Openfire,利用XMPP协议完成一个可以即时通讯.拥有好友系统的聊天软件. 一.服务器配置与相关库 理论不多说,只谈 ...

  8. XMPP协议实现即时通讯底层书写 (一)--从RFC6121阅读開始

    Extensible Messaging and Presence Protocol (XMPP): Instant Messaging and Presence ok,额瑞巴蒂,说好的阅读RFC61 ...

  9. 开源jabber(XMPP)架设内部即时通讯服务的解决方案

    Jabber 是著名的即时通讯服务服务器,它是一个自由开源软件,能让用户自己架即时通讯服务器,可以在Internet上应用,也可以在局域网中应用.    XMPP(可扩展消息处理现场协议)是基于可扩展 ...

随机推荐

  1. JS基本数据类型(typeof的返回结果)

    number(Infinity/NaN) string boolean function object(null.各种值装箱对象.内置对象.自定义对象) undefined 判断对象是否为某个[类/构 ...

  2. [POJ 3728]The merchant

    Description There are N cities in a country, and there is one and only one simple path between each ...

  3. Linux 基本概念和操作2

    接着上一篇 "Linux 基本概念和操作" 1.删除文件 有时候我们想要删除的文件是只读文件,直接使用rm 文件名,会报错.这时使用" -f " 参数强制删除. ...

  4. Angular 和 Vue 使用的对比总结 -- 脚手架

    前言 之前是用Vue的,现在由于工作原因,开始使用Angular.分别是Vue2和Angular5入的坑.只是从使用上来对比总结,加深记忆,避免混淆. 什么 ?  你问实现原理的异同及优劣? 本宝宝还 ...

  5. 一款基于Vue的扩展性组件库 VV-UI

    github: https://github.com/VV-UI/VV-UI 演示地址: https://vv-ui.github.io/VV-UI/#/meta-info 1. LoadingBar ...

  6. JVM中判断对象是否存活的方法

    Java中几乎所有的对象实例都存放在堆中,在垃圾收集器对堆内存进行回收前,第一件事情就是要确定哪些对象还“存活”,哪些对象已经“死去”(即不可能再通过任何途径被使用). 引用计数算法 首先需要声明,至 ...

  7. 4月18开始看《C++Primer Plus》

    好久没有写博客了,之前也说过水平有限,也写不出什么技术博客,只能写些感悟. 过年之后,陆续做了2.3个项目,刚开始可能不太熟悉流程,怎么和页面传数据?最近一个项目1/2天就写完代码了,真的很简单,主要 ...

  8. 网易笔试题:浏览器中输入一个url后回车到返回页面信息的过程

    You enter a URL into the browser输入一个url地址 The browser looks up the IP address for the domain name浏览器 ...

  9. SpringBoot+Mybatis+ Druid+PageHelper 实现多数据源并分页

    前言 本篇文章主要讲述的是SpringBoot整合Mybatis.Druid和PageHelper 并实现多数据源和分页.其中SpringBoot整合Mybatis这块,在之前的的一篇文章中已经讲述了 ...

  10. 动态SQL中不同变量的写法总结

    .一般变量的写法: if (str_kind is not null) then l_str_kind := str_kind; v_wheresql := v_wheresql || ' and k ...