前言:其实这个项目早就开发完成了,在本人的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

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

支付宝扫一扫:


微信扫一扫:


转载于:https://www.cnblogs.com/hainange/p/6334007.html

高仿腾讯QQ即时通讯IM项目相关推荐

  1. C# 高仿腾讯QQ (TextBox控件美化)(附源码)

    接上一篇<C# 高仿腾讯QQ (Bottom控件美化) > 这篇来说一下QQ皮肤TextBox控件的美化: (1).已修正 每次窗口最小化以后再还原会发现窗口底部往下移了几十个像素(但还不 ...

  2. 高仿腾讯 QQ,已经实现了纯文本,表情,图片,语音,位置等信息的发送。

    QQ 项目地址:HuTianQi/QQ 简介:高仿腾讯 QQ,已经实现了纯文本,表情,图片,语音,位置等信息的发送. 一款高仿腾讯 QQ 的 IM 软件,基于 bmob SDK,已经实现聊天,表情,图 ...

  3. html5仿腾讯,高仿腾讯QQ Xplan(X计划)的H5页面(1):threejs创建地球

    上个月底,在朋友圈看到一个号称"这可能是地球上最美的h5"的分享,点进入后发现这个h5还很别致,思考了一会,决定要不高仿一个? 到今天为止,高仿基本完成, 除了手机端的media控 ...

  4. 高仿腾讯QQ Xplan(X计划)的H5页面(2):动画控制

    上一篇知道如何制作threejs地球之后,就正式coding了,当然还是使用最心爱的Vue.本篇会有一些代码,但是都是十几行的独立片段,相信你不用担心. 布局 在进入本篇主题前,要简单看一下xplan ...

  5. C# 高仿腾讯QQ (实现QQ好友列表-基于ListBox的绘法)

    C#实现QQ好友列表,一直是我网上百搜却不得其解的控件,几乎找不到相关的信息,而找到的也不是我想要的那种.不过,曾在CSDN上看过到过网上一位大牛用C++实现QQ好友列表这种效果,当然,对于我这个C+ ...

  6. C# 高仿腾讯QQ (窗口皮肤美化)(附测试源码)

    首写这篇文章之前先跟大家说声抱歉,我很少写这方面的文章,所以一直不敢动手,之前的文章确实不带源的,因为当时只是想做为自己初次开发的记录过程,打算程序开发完后再来贴源的.不过从现在开始,我觉定还是把自己 ...

  7. C#高仿腾讯QQ截图程序

    最近把以前制作的截图程序重新写了一下 动了一个大手术 高质量仿照的TX的截图程序 源码下载1(2012-12-09) http://download.csdn.net/detail/crystal_l ...

  8. C#高仿腾讯QQ截图程序(改)

    很久没有来CSDN了 也很久没有自己写过代码了 算了废话不多说 具体内容看前一篇文章http://blog.csdn.net/crystal_lz/article/details/8274277 这个 ...

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

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

  10. winform服务器消息推送,winform项目——仿QQ即时通讯程序12:服务端程序补充及优化...

    原标题:winform项目--仿QQ即时通讯程序12:服务端程序补充及优化 上一篇文章大概完成了服务端程序,今天继续做项目的时候发现还有一些功能没有做,还有几处地方不够完善.不做好就会影响客户端程序的 ...

最新文章

  1. 【深度学习】Tensorboard可视化模型训练过程和Colab使用
  2. 《机电传动控制》学习笔记10-1
  3. Caffe学习系列(2):数据层及参数
  4. 如何让CentOS8虚拟机与主机相互Ping通
  5. python tornado高并发_tornado IO并发真的很高么?
  6. Fisher准则一维聚类
  7. 为何师兄研二就能发表COLING国际会议长文?
  8. ML/DL-复习笔记【六】- 理解反向传播算法
  9. 变分模态分解(VMD)
  10. Effective Modern C++42招独家技巧助你改善C++11和C++14的高效用法笔记
  11. PCIe/PCI插槽不够用怎么办
  12. 撤销对计算机所有的更改 不断重启,win10撤销更改无限重启怎么解决
  13. JNI 手动释放内存(避免内存泄露)
  14. Error: Cannot find module ‘babel-preset-es2015‘
  15. 永久免费的专业二维码生成器和二维码扫描器
  16. 那些酷炫的网页你也可以做到——第二篇(HTML排版)
  17. 2019第十届蓝桥杯JAVA G组题解
  18. jupyter的安装步骤
  19. C# 使用WebSocket创建聊天室案例
  20. 美中嘉和赴港IPO背后:毛利率大幅下滑,杨建宇控股2家公司均亏损

热门文章

  1. 【Unity优化篇】| Unity3D场景 常用优化策略,遮挡剔除、层消隐距离技术 和 LOD多层次细节
  2. python中outside function_运行提示SyntaxError: 'yield' outside function
  3. 51中程序存储器和数据存储器
  4. linux获取pc指针地址,为什么pc可以看成使程序存储器的地址指针
  5. lettuce连接池真有必要吗?
  6. JQ与JS实现全选按钮案例
  7. 清华学霸:想学好英语,除了3500词,记牢这514个核心短语更重要
  8. 微信小程序自定义头部导航栏
  9. 如何将dwt模板移到php,如何制作ECSHOP模板
  10. 中华小子剧情介绍,中华小子在线观看