開源專案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地圖顯示聯絡人的位置以及更新等功能。