1. 程式人生 > >開源專案Jchat 編譯以及原始碼分析

開源專案Jchat 編譯以及原始碼分析

Android jChat 是一個 Android 手機上基於位置的聊天軟體,採用P2P通訊機制。

本下載包含有:開發文件以及AndroidjChat原始碼和JADE應用的一個聊天測試程式(JadeAndroid-Programming-Tutorial 有說明)。

JChat 的編譯:

1、配置環境,需要的軟體有Android 模擬器,JADE Leap(JADE是多agent開發框架),J2SE (至少1.5),如果需要編譯LocationProvider,就需要下載ant工具了。

2、進入開發設定,執行模擬器,安裝JChat檔案(可通過命令adbinstall <PATH_TO_APK>\jChat.apk),執行JADE平臺(可通過命令java-cp <PATH_TO_JADE_LEAP_JAR>\JadeLeap.jar-Djade_domain_df_autocleanup=true jade.Boot -gui ),從模擬器中執行程式JChat,在JADE平臺選單中設定主機以及埠。設定措施需要在官網中下載MockedGPS專案進行設定(MockedGPSLocationProvider.apk),也可自己使用ant編譯原始碼,這個也是開源的,最後在JChat程式選單中點選連線按鈕進行連線操作(詳情可以看官方文件--下載包中有)。

3、原始碼分析之前,需要認真學習一下Jade的Android的程式設計(有聊天程式原始碼下載,都在下載包中),編譯原始碼,需要到google中申請 map api 的key,不過由於神奇的國度制約的原因,申請連線的網站無法訪問,需要通過其它的方法,比如等等,申請到的key 需要放到homepage.xml中。

下面來進行分析吧,分析只是針對原始碼,其它的不涉及。

本專案共25個目標檔案。

ContactListActivity程式的啟動頁,內部含有控制地圖以及Jade連線等操作,方法onConnected是JadeGateWay裡面的回撥方法。JadeGateWay是開源裡面的一個庫,目前沒開源。

ChatActivity 是聊天的主介面,主要通過JadaGateway操作連線,傳送,接受等

ChatSessionNotificationManager聊天會話通知管理自定義類,記錄了所有的程序清單。

Contact 接觸者自定義類,含有名稱,電話號碼,狀態值,是否在sd卡里面…。

ContactListAdapter接觸者列表介面卡,主要使用者顯示聯絡人列表的資訊。

ContactListChanges接觸者列表變化的自定義類,接觸者列表狀態更新。

ContactLocation 接觸者位置類,是否有移動等動作。

ContactManager 接觸者管理類,主要負責接觸者的新增、刪減以及UI更新等功能。

ContactsPositionOverlay接觸者的位置顯示物,Overlay的子類,主要負責在地圖上顯示自定義影象,內建滾動與否以及影象大小改變與否,在地圖上話畫線上聯絡人以及場景等。

ContactsUpdaterBehaviour主要表現在其設定由MsnAgent執行。它基本上執行主要業務:定期更新的DF的手機中所有接觸的位置(由模擬的GPS更新)。

GeoNavigator 自定義導航類,啟動或關閉聯絡位置的更新。

GuiEventHandlerUI處理類。

IEventHandler 事件處理類介面。

JadeParameterDialog Jade引數設定對話方塊。

JChatApplication 應用程式類,存貯了全域性變數資訊,以及初始化伺服器以及埠號,手機號等

MsnAgent 訊息代理(Jade的Android的程式設計)

MsnEventMgr訊息事件的自定義類,含有事件名,地圖儲存事件等引數資訊,

MsnSession 訊息會話,含有所有參與者的電話號碼,以及訊息,

MsnSessionAdapter訊息會話介面卡,顯示訊息會話檢視。

MsnSessionManager訊息會話管理的自定義類,主要是啟動會話,新增會話,移除會話,返回會話,新增訊息到會話等操作。

MsnSessionMessage訊息會話訊息的自定義累,含有時間、內容、傳送者姓名以及電話號碼等。

MultiSelectionListView多選列表

SendSMSActivity 傳送訊息介面,執行傳送任務。

SMSIntentReceiver訊息接收廣播,主要負責訊息的接收。

程式主要是已訊息會話為主,引用了Google地圖顯示聯絡人的位置以及更新等功能。