高仿騰訊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

如果覺得我的部落格寫的不錯,幫助到了您,打賞一個鼓勵我繼續創作吧微笑

支付寶掃一掃:


微信掃一掃: