簡介
這是一個完整的xmpp的Android的項目
服務端使用openfire3.9.3
客戶端使用Android4.2.2
集成第三方:
百度地圖sdk
asmack.jar
universal-image-loader-1.9.3.jar
項目地址
https://github.com/mozhenhau/D3Xmpp
功能
- 注冊登錄會員
- 會員個人資料修改
- 基本聊天
- 語音、圖片、表情、動態表情、發送位置聊天(位置需要注冊百度api)
- 群聊(openfire需要安裝插件)
- 位置共享(實驗功能,openfire需要安裝插件)
-
項目結構
包及其類的作用:
1.activites和fragments
activites和fragments放的類是一樣的,是放activity和fragment的。作用是android的Controller層。
BaseActivity—— 一切activity的基類,繼承了D3Activity。主要是實現注解實例化
ChangePwdActivity—— 修改密碼頁
ChatActivity—— 聊天頁。Intent必須參數chatName(聊天對象,單聊為對方id,群聊為群名稱),
可選參數chattype。chatType有單聊和群聊兩個參數,不傳則默認單聊。
ChoseActivity—- 群組邀請頁面。Intent必須參數roomName和成員members
CropImageActivity—- 截圖頁面。isAutoSend為true時自動截圖
FriendActivity—- 好友詳情頁。必須參數username
LoginActivity—- 登陸頁。
MainActivity—- 主頁。使用fragments包住四個TAB頁面
MapActivity—- 地圖頁. 從聊天頁的位置跳到此頁面。必須參數lat,lon
MyRoomActivity—- 我的群組頁
NewFriendActivity—- 我的新好友申請頁
PicSrcPickerActivity—- 彈出選擇選圖方式。拍照和圖庫
RegActivity—- 注冊頁
RoomMemActivity—- 群組成員
SearchActivity—- 搜索好友頁
ShowPicActivitiy—- 展示大圖頁
TempActivity—- 模板類,方便我復制生成一個新類而已
WebActivity—- 一個全屏的webview//fragment
AdrFragment—- 位置頁.
原理:登錄后的用戶,每分鍾上傳一次自己的位置,如果下線則刪除自己的位置。
登陸后的用戶,每分鍾更新一次自己好友的位置,如果對方在線則在百度地圖中渲染出紅點。
如果取消共享位置,則關閉以上功能MsgFragment—- “首頁”消息
原理:登錄后的用戶,通過XmppMessageInterceptor和XmppMessageListener兩個類攔截自己發出和接收到的消息,攔截消息后更新到MsgFragment顯示出來。ContactFragment—- 通訊錄頁
原理:登錄后的用戶,通過XmppPresenceInterceptor和XmppPresenceListener兩個類攔截自己發出和接收到的好友狀態消息,攔截狀態消息后更新到這里。
MeFragment—- “我的”頁
2. com.d3.d3xmpp.adapter
主要存放activity和fragment對應的list適配。懂android的都知道
3.com.d3.d3xmpp.constant
存放配置類,有三個:
com.d3.d3xmpp.constant. Constants類是常用的配置
com.d3.d3xmpp.constant. MyApplication類是全局Application,方便管理android
com.d3.d3xmpp.constant. ImgConfig是圖片類,用於優化圖片加載,使用的universal-image-loader-1.9.3.jar4.com.d3.d3xmpp.dao 和 com.d3.d3xmpp.model
是屬於MVC模式中的Model。
dao負責獲取數據庫的數據,並返回給Activity
model是基礎數據類5.com.d3.d3xmpp.d3View 和 com.d3.d3xmpp.util
這是私人框架,集成了android開發中常用的一些方法及View。
包括錄音按鈕RecordButton,加入了下拉刷新的MyListView,實現了注解實例view的D3Activity等等。6.com.d3.d3xmpp.xmpp(xmpp的核心)
:
其他都是安卓開發者必須懂的東西。下面說xmpp類的作用
XmppConnectionListerner是xmpp的連接狀態的listener,比如斷線等
XmppMessageInterceptor是發出消息的listener,在此攔截並持久化聊天紀錄
XmppMessageListener是收到消息的listener,在此攔截並持久化聊天紀錄
XmppPresenceInterceptor是本機發出好友消息的監聽,比如添加好友,刪除好友
XmppPresenceListener是本機收到好友消息的監聽,比如添加好友,刪除好友
XmppConnection是xmpp基本操作的核心類,包括登錄,注冊,聊天,修改密碼,好友管理,群組管理等等。PS:
該項目是本人在學習xmpp過程中總結的一些東西,代碼組織凌亂,旨在幫助新入門xmpp學習xmpp的基本使用