文档章节

高仿腾讯QQ即时通讯IM项目

htq
 htq
发布于 2016/07/26 09:41
字数 1309
阅读 288
收藏 5

前言:其实这个项目早就开发完成了,在本人的github上,本来没打算写成博客的形式,因为一个项目要写出来要花很久,但是最近看到很多 人在我的github上download后随意发布到网上,本来上传到github就是供大家互相借鉴学习的,但是在本人的github上也说过希望注明出处,但是很遗憾没看到一个人注明我的github地址,我也跟上传者说过希望他们注明我的github地址,但一直没回应,自己花了那么久做出来的项目,希望大家在相互学习的同时能够尊重原创人员的劳动成果,但是github不能证明那个项目是自己做的,因为本人还是学生,是要使用这个项目去找实习的,现在被人随意发布到网上,不能证明这个项目是自己做的,所以就打算把它写到自己的博客上,因为博客的图片可以打水印,这样做也是不得已而为之。以下内容是直接从我的github复制过来的。大家可以去我的github了解,欢迎follow,star与fork。


本项目为安卓平台的一款模仿腾讯QQ的即时通讯APP,整体框架为目前大多数优质应用主流框架(侧滑菜单+底部导航),UI框架可供绝大数应用直接引用,主要模仿腾讯QQ,实现了发送文本与图片功能,应用界面十分漂亮,已达商业APP水平,可供安卓程序员参考学习,如若要引用,请注明出处:https://github.com/HuTianQi

涉及到的安卓技术:

(1)自定义控件: 
自绘控件,组合控件,继承控件这三种方式都用到了 比如:仿QQ用来显示用户头像的CircleImageView采用的是自绘的方式(后改为github开源项目CircleImageView) 整个应用的自定义标题栏TitleBarView采用的是组合控件的方式,在该TitleBarView中提供了一些setter(),getter()方法来操作这些组合的控件 仿QQ滑动删除功能的MyListView采用的是继承控件的方式

(2)第三方接口调用: 
如在用户登录界面中提供的腾讯QQ授权登陆功能采用了腾讯开放平台提供的openAPI接口。

(3)github开源库的应用: 
如侧滑菜单控件SlidingMenu和显示用户圆形图像的CircleImageView

(4)安卓中的消息传递: 
最基本的运用Handler在子线程与主线程之间传递信息
在MyApplication这个全局单例类中定义公共的对象及方法来供不同组件之间访问信息 
在ClientInputThread客户端读线程中采用了接口回调对外传递信息 
在GetMsgService服务中采用了广播与BaseActivity传递信息。

(5)网络通信及多线程: 
最基本网络请求采用HttpUrlConnection和Volley(主要用来处理请求频繁但数据量不大的情况,比如Json和图片的请求),解决Volley数据请求中文乱码问题。 
最核心的聊天功能采用Socket通信,为了在网络上传送用户的信息,采用了ObjectInputStream/ObjectOutputStream来读写信息,定义的User类实现来Serializale接口实现序列化以达到在网络上传输的目的 将客户端读写功能放到单独的线程中,通过Client类来管理ClientInputThread与ClientOutputThread,在ClientInputThread中接收服务器端消息的代码在public void run(){} 方法中,因为该方法返回值为void无法返回线程中读取的信息,所以采用了接口回调 技术对外传递信息

(6)xml与json数据解析: 
这个在腾讯第三方接口调用中用到,用来解析从腾讯服务器端获取的用户登录的一些基本信息,如昵称,用户头像等,这个主要参考腾讯开放平台提供的openAPI文档,在QQ天气功能模块也用到,主要采用Volley获取从中国天气网指定接口中获取的json数据。

(7)数据存储,数据库操作 
比如保存用户头像等一些资料到本地文件,MessageDB保存用户的聊天记录到数据库 UserDB保存用户的好友信息到数据库。

调试错误: 
这个主要是通过在模拟器上运行出错时通过查看LogCat上的错误信息来判断代码逻辑(一般运行时出错都是代码逻辑上的错误),某些很难判断的错误通过百度,贴吧,论坛, stackoverflow(个人觉得这个网站是调bug求帮助最好的网站,可惜是英文)寻求错误信息查找解决方案。












欢迎大家关注我的博客账号哦,将会不定期为大家分享技术干货,福利多多哦,另外如果大家觉得不错记得小手一抖点个赞哦!


我的github地址:https://github.com/HuTianQi,欢迎大家follow,star与fork。



本文转载自:http://blog.csdn.net/htq__/article/details/51840273

共有 人打赏支持
htq

htq

粉丝 19
博文 67
码字总数 1007
作品 3
武汉
私信 提问
开发一款即时通讯App,从这几步开始

欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由腾讯云视频发表于云+社区专栏 关注公众号“腾讯云视频”,一键获取 技术干货 | 优惠活动 | 视频方案 “晚上去哪吃饭啊?”...

腾讯云加社区
2018/10/29
0
0
高仿 QQ-环信即时通讯版--FanChat

项目简介 本项目是即时通讯的示例项目,使用了MVP模式,集成了环信SDK和Bmob后端云,展示了即时通讯基本功能的实现,包括注册登录,退出登录,联系人列表,添加好友,删除好友,收发消息,消...

环信
2016/12/05
1K
1
TeamTalk源码分析(一)—— TeamTalk介绍

TeamTalk是蘑菇街开源的一款企业内部用的即时通讯软件(Enterprise IM),类似腾讯的RTX。网上也有很多的介绍,我这里也有写几遍关于这款产品的“流水账”,一方面对自己这段时间的阅读其代码...

analogous_love
2017/05/05
0
0
高仿腾讯QQ--HTQ_QQ

本项目为安卓平台的一款模仿腾讯QQ的即时通讯APP,整体框架为目前大多数优质应用主流框架(侧滑菜单+底部导航),UI框架可供绝大数应用参考,主要模仿腾讯QQ,实现了发送文本与图片功能,应用...

匿名
2016/08/01
1K
0
RooyeeMessenger由Delphi开发的XMPP即时通讯客户端V2.0

引文:据行业研究机构RadicatiGroup公司预测,越来越多的即时通讯用户相信,继电话和电子邮件之后,即时通讯服务正在全球迅速普及,而且将迅速成为个人间实时通讯的有机组成部分。全球即时通...

李林
2009/04/22
300
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周五乱弹 —— 姑娘馋的口水都留下来了。

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @且无需多言 :分享Fall Out Boy的单曲《Disloyal Order Of Water Buffaloes》 《Disloyal Order Of Water Buffaloes》- Fall Out Boy 手机党...

小小编辑
32分钟前
9
4
vue 对对象的属性进行修改时,不能渲染页面 vue.$set()

我在vue里的方法里给一个对象添加某个属性时,我console.log出来的是已经更改的object ,但是页面始终没有变化 原因如下: **受现代 JavaScript 的限制 (而且 Object.observe 也已经被废弃),...

Js_Mei
今天
2
0
开始看《Java学习笔记》

虽然书买了很久,但一直没看。这其中也写过一些Java程序,但都是基于IDE的帮助和对C#的理解来写的,感觉不踏实。 林信良的书写得蛮好的,能够帮助打好基础,看得出作者是比较用心的。 第1章概...

max佩恩
昨天
12
0
Redux 三大原则

1.单一数据源 在传统的MVC架构中,我们可以根据需要创建无数个Model,而Model之间可以互相监听、触发事件甚至循环或嵌套触发事件,这些在Redux中都是不被允许的。 因为在Redux的思想里,一个...

wenxingjun
昨天
8
0
跟我学Spring Cloud(Finchley版)-12-微服务容错三板斧

至此,我们已实现服务发现、负载均衡,同时,使用Feign也实现了良好的远程调用——我们的代码是可读、可维护的。理论上,我们现在已经能构建一个不错的分布式应用了,但微服务之间是通过网络...

周立_ITMuch
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部