Android之基於XMPP協議即時通訊軟體(一)
原始碼地址: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也是大大的有的啦。功能也還有待完善,下一步準備新增聯絡人頭像、實現討論組聊天功能,以及實現檔案傳輸等等功能,我也是一邊學習一邊做此應用的。如果有朋友對此專案有興趣,歡迎跟我一起合作,共同完善改進此專案,準備在開源中國託管此專案。
相關文章
- 基於XMPP協議開發Android即時通訊軟體協議Android
- 基於XMPP協議Android即時通訊開源應用協議Android
- 基於XMPP協議的Android即時通訊系協議Android
- 【XMPP】基於XMPP的即時通訊解決方案
- Android學習筆記--基於XMPP的即時通訊Android筆記
- xmpp即時通訊詳解
- 基於XMPP的即時通訊系統的建立(四)— 協議詳解協議
- xmpp實現的即時通訊聊天(一)
- QT開發的即時通訊軟體(基於UDP)QTUDP
- 基於XMPP的即時通訊系統的建立(一)— XMPP基礎概念
- 即時通訊框架T-io之WebSocket協議再之HelloWorld框架Web協議
- xmpp實現的即時通訊聊天(二)
- 【XMPP】XMPP協議之原理篇協議
- iOS開發即時通訊環境搭建-XMPPiOS
- 基於XMPP的即時通訊系統的建立(二)— XMPP詳解
- 基於XMPP協議(openfire伺服器)的訊息推送實現協議伺服器
- 基於java博網即時通訊軟體的設計與實現Java
- XMPP協議協議
- 即時通訊軟體openfire+spark+smackSparkMac
- iOS:即時通訊之iOS
- 如何從零開始定義一個類似websocket的即時通訊協議Web協議
- XMPP系列2:如何掌握XMPP協議協議
- 基於 swoole擴充套件 的即時通訊 im套件
- Linux安裝即時通訊軟體SignalLinux
- XMPP協議介紹協議
- 通訊協議之序列化協議
- 通訊協議協議
- 基於C#的通訊協議封包(附程式碼)C#協議
- 即時通訊
- 工業通訊協議(一)- CAN協議
- 基於Http協議的軟體自動升級HTTP協議
- 如何從零開始寫一個即時通訊軟體(附原始碼)原始碼
- Redis 通訊協議Redis協議
- HTTP通訊協議HTTP協議
- Mysql通訊協議MySql協議
- MQ通訊協議MQ協議
- web通訊協議Web協議
- P2P通訊標準協議(一)之STUN協議