Android之基於XMPP協議即時通訊軟體(一)

remotesupport發表於2014-11-29

轉自http://blog.csdn.net/way_ping_li/article/details/17385379

原始碼地址:http://download.csdn.net/detail/weidi1989/6731835

開源中國(歡迎fork):http://git.oschina.net/way/XMPP

好了,進入正題,之前有朋友問我,為什麼不做基於xmpp協議的即時通訊,開放的伺服器很多,比如google talk、facebook、Twitter等(由於天朝特有的城牆,貌似只有google talk能連線上),並且也可以自己搭建伺服器,那就是開源的openfire,具體搭建方案請移步:mac搭建openfire伺服器教程 。其他系統也是大同小異,我在ubuntu上也是參考此部落格搭建的。

於是乎,為了簡單方便,我便把之前百度推聊換了一個芯:將基於百度雲推送改成基於asmack的即時通訊,當然,介面也會有一定的改動,會增加一些新東西,也會去掉一些多餘的累贅。另外改動比較大的資料庫存取方式,這次改成contentprovider,關於這個Android四大基本元件之一,我們幾乎都是用的比較多,實現真是少之又少,權當是練練手吧!下面一起來看看效果圖:

1.老規矩,先上Splash,在這個過度介面,我們可以初始化一些必要的資料。

2.登陸提示介面,仿zaker介面的開門效果,可以往上滑動收起來。沒有找到合適的幫助圖片,就用紅色的文字顯示,沒有做註冊功能,因為google talk註冊沒有那麼簡單,只能實現自己搭建的openfire伺服器註冊賬號,就直接去掉算了。

3.我這裡使用的是Google賬號登陸測試的。

4.主介面,和之前的百度推聊是一樣的啦,直接移植過來的。只是將好友列表和最近會話換了一下位置。點選暱稱可以切換線上狀態。

5.空的最近會話列表。

6.好友列表是可以區分好友線上狀態的,同時長按好友會彈出操作提示框,一個開源的控制元件,稍微修改了一下,換了一層皮。

7.好友列表實現了仿QQ的效果,IphoneTreeView和下拉重新整理的功能,稍微有一點點小問題,不過個人能力問題,只能優化到這個樣子,請諒解。

8.設定介面,點選退出按鈕,可以實現仿Iphone的退出對話方塊。

9.最近會話也是可以滑動刪除的啦,直接從之前的專案移植過來的。

10.聊天介面,也是基本上從之前專案移植過來的。

11.關於介面,留下了投票方式哦,歡迎各位直接用手機點選進入給我投票,\(^o^)/~

12.本應用內部每個Activity都是可以手勢滑動返回的,可以解放你的返回按鍵。


           


好了,看完介面的基本介紹,下面來看看專案結構:

 

包分得比較多,但是程式碼還是很少的啦,重要的幾個包講一下:

1.com.way.service:這是本應用的最重要的包啦,為了簡單,本應用只用了一個服務,包括登陸、聊天、超時判斷以及連線等等,都是在此處處理。

2.com.way.smack:這裡是對asmack第三方包重新包裝的一個工具包,方便本應用直接呼叫。

3.com.way.activity;理所當然就是所有Activity咯。

4.com.way.app:這裡有一個廣播接受者和Application類,主要是用來接受系統廣播,比如說網路連線上或者斷開,開關機等等廣播。

5.com.way.db:沒錯,就是運算元據庫咯,總共是兩個ContentProvider,一個是儲存好友,一個是儲存聊天記錄。

6.其他的一些包大都是控制元件或者工具類,為了方便自己下次使用以及大家直接copy到自己的專案中,每個不同的控制元件我都用不同的包名分開的啦,雖然顯得比較龐大,但是copy到自己專案中還是很方便的吧!


OK,今天就大概介紹了一下這個小應用,bug也是大大的有的啦。功能也還有待完善,下一步準備新增聯絡人頭像、實現討論組聊天功能,以及實現檔案傳輸等等功能,我也是一邊學習一邊做此應用的。如果有朋友對此專案有興趣,歡迎跟我一起合作,共同完善改進此專案,準備在開源中國託管此專案。

大概就這樣了,具體分析本專案,留在下一次部落格,謝謝你看到文章最後!記得投票哦。O(∩_∩)O哈哈~


相關文章