前言:其实这个项目早就开发完成了,在本人的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上,github地址:https://github.com/HuTianQi,欢迎大家follow,star与fork

如果觉得我的博客写的不错,帮助到了您,打赏一个鼓励我继续创作吧

支付宝扫一扫:


微信扫一扫:


高仿腾讯QQ即时通讯IM项目的更多相关文章

  1. 高仿腾讯QQ最终版

    之前写过一篇关于高仿腾讯QQ的博客,不知道的看这:http://blog.csdn.net/htq__/article/details/51840273 ,主要是从界面上高仿了腾讯QQ,在UI上基本上 ...

  2. 基于环信的仿QQ即时通讯的简单实现

    代码地址如下:http://www.demodashi.com/demo/11645.html 我的博客地址 之前一直想实现聊天的功能,但是感觉有点困难,今天看了环信的API,就利用下午的时间动手试了 ...

  3. 仿腾讯QQ竖直滑动导航菜单

    菜单就像qq软件的分组,鼠标经过自动显示相应组的内容. 效果体验网址:http://keleyi.com/a/bjad/nf86w2dv.htm 以下是源代码: <html> <he ...

  4. Android 高仿腾讯旗下app的 皮肤加载技术

    http://www.cnblogs.com/punkisnotdead/p/4968851.html 以前写的这篇文章 可以高仿出 知乎 新浪微博等 绝大多数app的换肤技术,但是遗漏了腾讯的效果, ...

  5. 基于Vue2、WebSocket的仿腾讯QQ

    概述 本项目基于Vue2进行高仿手机QQ的webapp,UI上使用的是museUI,使用springMVC搭建的后台.聊天方面,使用WebSocket实现浏览器与服务器全双工通信,允许服务器主动发送信 ...

  6. jQuery插件实现图片展开效果,jquery.gallery。仿腾讯QQ空间说说图片展示效果。

    公司的项目http://www.umfun.com/,有个说说的页面(和腾讯QQ空间说说一样),里面有个发表图片功能,上传完图片,需要点击展开的效果. 当时手里面事情比较多(公司就我一个前端),忙不过 ...

  7. 高仿Readhub小程序 微信小程序项目【原】

    # News #### 项目介绍微信小程序项目涉及功能 https://gitee.com/richard1015/News https://github.com/richard1015/News 高 ...

  8. 高仿Windows Phone QQ登录界面

    给 TextBox文本框前添加图片 扩展PhoneTextBox:添加一个类"ExtentPhoneTextBox"继承 PhoneTextBox ,在"ExtentPh ...

  9. ListView滑动删除 ,仿腾讯QQ

    转载请表明出处:http://blog.csdn.net/lmj623565791/article/details/22961279 在CSDN上开了很多大神们的文章,感觉受益良多,也非常欣赏大家的分 ...

随机推荐

  1. [HNOI2011]卡农

    题目描述 众所周知卡农是一种复调音乐的写作技法,小余在听卡农音乐时灵感大发,发明了一种新的音乐谱写规则.他将声音分成 n 个音阶,并将音乐分成若干个片段.音乐的每个片段都是由 1 到 n 个音阶构成的 ...

  2. 中断下半部处理之tasklet

    1.tasklet概述 下半部和退后执行的工作,软中断的使用只在那些执行频率很高和连续性要求很高的情况下才需要.在大多数情况下,为了控制一个寻常的硬件设备,tasklet机制都是实现自己下半部的最佳选 ...

  3. bzoj 4006: [JLOI2015]管道连接

    Description 小铭铭最近进入了某情报部门,该部门正在被如何建立安全的通道连接困扰. 该部门有 n 个情报站,用 1 到 n 的整数编号.给出 m 对情报站 ui;vi 和费用 wi,表示情 ...

  4. poj1681 高斯消元

    Painter's Problem Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 5352   Accepted: 2588 ...

  5. [Educational Codeforces Round#22]

    来自FallDream的博客,未经允许,请勿转载,谢谢. 晚上去clj博客逛来逛去很开心,突然同学提醒了一下,发现cf已经开始40分钟了,慌的一B,从B题开始写,写完了B到E最后收掉了A,结果太着急B ...

  6. bzoj1227 组合数学+bit

    1227: [SDOI2009]虔诚的墓主人 Time Limit: 5 Sec  Memory Limit: 259 MBSubmit: 1412  Solved: 664[Submit][Stat ...

  7. Express 配置 https / 443 安全链接

    按照教程已配置成功 前一部分内容参照     https://blog.csdn.net/chenyufeng1991/article/details/60340006 前半部分是生成证书文件,关键部 ...

  8. vsftpd详解(ubuntu)

    安装 apt-get instll vsftpd 配置vsftp vim vsftpd.conf listen=YES listen_port= anonymous_enable=NO local_e ...

  9. struts框架从.jsp页面直接访问action

    <%@ page language="java" pageEncoding="UTF-8"%><%String path = request. ...

  10. c++DLL编程详解

    DLL(Dynamic Link Library)的概念,你可以简单的把DLL看成一种仓库,它提供给你一些可以直接拿来用的变量.函数或类.在仓库的发展史上经历了“无库-静态链接库-动态链接库”的时代. ...