高仿腾讯QQ即时通讯IM项目
前言:其實這個項目早就開發完成了,在本人的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项目的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 开发者一定要了解的六款大数据采集平台
- 下一篇: ABAP package not ext