文章開頭,先打一下廣告咯,今年誤打誤撞,僥倖進入2013CSDN博客之星候選,目前排名已經有點不堪入目,因此,謹但願廣大基友們動動手指,輕輕的點擊兩下,給我投出寶貴的一票,求宣傳,求擴散,很是感謝,感激不盡,總之是語無倫次的感謝!!!git
投票地址請移駕:http://vote.blog.csdn.net/blogstaritem/blogstar2013/weidi1989數據庫
源碼地址:http://download.csdn.net/detail/weidi1989/6731835ubuntu
開源中國(歡迎fork):http://git.oschina.net/way/XMPP服務器
好了,進入正題,以前有朋友問我,爲何不作基於xmpp協議的即時通信,開放的服務器不少,好比google talk、facebook、Twitter等(因爲天朝特有的城牆,貌似只有google talk能鏈接上),而且也能夠本身搭建服務器,那就是開源的openfire,具體搭建方案請移步:mac搭建openfire服務器教程 。其餘系統也是大同小異,我在ubuntu上也是參考此博客搭建的。網絡
因而乎,爲了簡單方便,我便把以前百度推聊換了一個芯:將基於百度雲推送改爲基於asmack的即時通信,固然,界面也會有必定的改動,會增長一些新東西,也會去掉一些多餘的累贅。另外改動比較大的數據庫存取方式,此次改爲contentprovider,關於這個Android四大基本組件之一,咱們幾乎都是用的比較多,實現真是少之又少,權當是練練手吧!下面一塊兒來看看效果圖:app
1.老規矩,先上Splash,在這個過分界面,咱們能夠初始化一些必要的數據。ide
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哈哈~