文档章节

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

htq
 htq
发布于 2016/07/26 09:41
字数 1309
阅读 278
收藏 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,从这几步开始

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

腾讯云加社区
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
腾讯技术分享:微信小程序音视频技术背后的故事

1、引言 微信小程序自2017年1月9日正式对外公布以来,越来越受到关注和重视频,小程序上的各种技术体验也越来越丰富。音视频作为高速移动网络时代下增长最快的应用形式之一,在微信小程序中也...

JackJiang2011
07/21
0
0

没有更多内容

加载失败,请刷新页面

加载更多

2135亿背后的双11项目协作怎么玩?

2018天猫双11已经收官,2135亿元的成交额再度刷新纪录,这是一场阿里巴巴经济体的深度协作。 在这个大协作项目中,项目协作难题难以想象:如何保证众多部门、百个核心产品、千个垂直项目、几...

阿里云云栖社区
27分钟前
5
0
Golang MD5 加密使用方法

用法一: str:="123456"data:=[]byte(str)h := md5.New()h.Write(data)output := h.Sum(nil)fmt.Println(fmt.Sprintf("%x",output)) 结果: e10adc3949ba59abbe56e057f20f883e 用......

lwkai
33分钟前
1
0
揭秘 | 双11逆天记录背后的数据库技术革新

每一个数字背后 都需要强大的技术支撑 Higher, Faster, Smarter 是我们不变的追求 技术无边界 创新无止境 原文链接

阿里云官方博客
37分钟前
1
0
深入解析React-redux插件入门

react-redux是使用redux开发react时使用的一个插件,另外插一句,redux不是react的产品,vue和angular中也可以使用redux;下面简单讲解,如何使用react-redux来开发react。 描述 这个插件可以...

前端攻城老湿
42分钟前
2
0
创建定长code

前言 有的时候我们需要基于现有的code进行改造,但是改造的一个前提可能是对于code长度有一定的要求,比如我们做分库分表,准备在code上做文章。 由于历史原因不同的渠道产生的code有几种不同...

春哥大魔王的博客
43分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部