遲玉梁, 甘新玲, 李 永
(1. 濱州學(xué)院 信息工程系, 山東 濱州 256600; 2. 濱州學(xué)院 教務(wù)處, 山東 濱州 256600)
基于Android平臺的多人實(shí)時(shí)定位與交流系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
遲玉梁1, 甘新玲1, 李 永2
(1. 濱州學(xué)院 信息工程系, 山東 濱州 256600; 2. 濱州學(xué)院 教務(wù)處, 山東 濱州 256600)
運(yùn)用JADE框架技術(shù)和百度地圖API技術(shù)設(shè)計(jì)并實(shí)現(xiàn)了基于Android平臺的多人實(shí)時(shí)定位與交流系統(tǒng),系統(tǒng)由登錄模塊、聯(lián)系人模塊和地圖模塊構(gòu)成。給出了聯(lián)系人模塊和地圖模塊的部分程序代碼。測試結(jié)果表明系統(tǒng)實(shí)現(xiàn)了多人實(shí)時(shí)定位與跟蹤、導(dǎo)航指路、在線聊天、位置查詢與共享以及行走軌跡記錄等主要功能。
Android; JADE; 多人定位; 百度地圖
隨著移動互聯(lián)網(wǎng)技術(shù)的迅速發(fā)展,基于Android平臺的各種智能手機(jī)衛(wèi)星定位導(dǎo)航等應(yīng)用越來越廣泛[1-4]。基于Android平臺的智能手機(jī)導(dǎo)航軟件可以為用戶的出行提供一些便捷服務(wù),但是程序的功能仍然存在一些局限性,多數(shù)僅限于常規(guī)的導(dǎo)航與定位,功能比較單一,多人實(shí)時(shí)定位與交流應(yīng)用程序較少,不能滿足用戶出行的多樣化需求[5-7]。
鑒于此,筆者設(shè)計(jì)了一款可以實(shí)現(xiàn)多人在線實(shí)時(shí)定位與交流系統(tǒng),實(shí)現(xiàn)多人實(shí)時(shí)定位與跟蹤、導(dǎo)航指路、在線聊天、位置查詢與共享以及行走軌跡記錄等主要功能,以實(shí)時(shí)掌握對方的位置動態(tài),并跟蹤、記錄對方行走軌跡,可以為在團(tuán)隊(duì)旅游、子女看護(hù)、公司員工管理等方面的應(yīng)用提供有效解決方案。
多人實(shí)時(shí)定位與交流系統(tǒng)的主要設(shè)計(jì)目標(biāo)包括以下4方面:
(1) 具有多人實(shí)時(shí)定位與交流功能,界面友好、功能清晰、可用性強(qiáng);
(2) 用戶登錄系統(tǒng)后可以獲取手機(jī)中的聯(lián)系人信息,實(shí)現(xiàn)與好友的在線交流,能夠在地圖上實(shí)時(shí)定位并獲取好友的準(zhǔn)確位置信息;
(3) 用戶定位好友后,在地圖上以氣泡突出顯示,用戶點(diǎn)擊氣泡時(shí),可以顯示好友姓名信息,選中氣泡后可進(jìn)行好友位置查詢,實(shí)時(shí)跟蹤、記錄行走軌跡;
(4) 用戶可以對不在線的好友發(fā)出上線邀請。
2.1 設(shè)計(jì)思想
對該系統(tǒng)的設(shè)計(jì)思想來源于基于Android平臺的智能手機(jī)應(yīng)用,運(yùn)用JADE框架技術(shù)和百度地圖API技術(shù),設(shè)計(jì)并實(shí)現(xiàn)基于Android平臺的多人實(shí)時(shí)定位與交流系統(tǒng)[8-10]。手機(jī)用戶通過輸入服務(wù)器IP地址以及真實(shí)手機(jī)號碼進(jìn)入系統(tǒng),系統(tǒng)應(yīng)用主要包括“聯(lián)系人”和“地圖”兩大功能模塊。
聯(lián)系人模塊主要用于顯示手機(jī)中的聯(lián)系人,當(dāng)選中任一在線聯(lián)系人即可進(jìn)行聊天,聊天過程中可主動與好友分享個(gè)人的當(dāng)前位置和行走軌跡。當(dāng)選中不在線聯(lián)系人時(shí),可進(jìn)行上線邀請,即發(fā)送邀請信息,信息內(nèi)容為手機(jī)用戶的服務(wù)器地址。
在地圖模塊中,主要以氣泡形式顯示好友的實(shí)時(shí)位置,用戶點(diǎn)擊氣泡可顯示好友信息,選中氣泡后即可實(shí)現(xiàn)察看好友位置、實(shí)時(shí)跟蹤、記錄行走軌跡,亦可實(shí)時(shí)聊天[11-12]。
2.2 系統(tǒng)結(jié)構(gòu)設(shè)計(jì)
根據(jù)以上系統(tǒng)需求分析得出系統(tǒng)設(shè)計(jì)結(jié)構(gòu)如圖1所示。

圖1 系統(tǒng)設(shè)計(jì)結(jié)構(gòu)圖
系統(tǒng)主要包括登錄模塊、聯(lián)系人模塊和地圖模塊。
3.1 登錄模塊
登錄模塊采用JADE框架的登錄方法,以JADE服務(wù)器的IP地址、端口號、用戶真實(shí)手機(jī)號為參數(shù)。用戶登錄系統(tǒng)后即可在服務(wù)器上創(chuàng)建一個(gè)Agent,該Agent以用戶真實(shí)手機(jī)號命名,因此每個(gè)登錄用戶都有一個(gè)唯一Agent。通過JADE框架中的ACLMessage對象實(shí)現(xiàn)Agent間消息的推送,即實(shí)現(xiàn)用戶之間的聊天功能;同時(shí),通過調(diào)用JADE框架的DF交互功能,實(shí)現(xiàn)各個(gè)Agent(用戶)之間位置信息共享。
3.2 聯(lián)系人模塊
該模塊主要實(shí)現(xiàn)手機(jī)聯(lián)系人信息讀取功能。通過調(diào)用Android平臺的query方法,將手機(jī)中的聯(lián)系人信息讀出并存儲在Cursor類對象cur中,然后遍歷cur即可顯示手機(jī)中的聯(lián)系人信息[13-14]。對于聯(lián)系人比較多的情況,為節(jié)省信息讀取時(shí)間,在后臺實(shí)現(xiàn)聯(lián)系人的模糊查詢。對于用戶不在線的好友,該模塊支持即時(shí)通話和即時(shí)短信功能,實(shí)現(xiàn)好友上線邀請的功能,以方便用戶快速聯(lián)系到好友。其中獲取聯(lián)系人的部分代碼如下:
Cursor cur = act.getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, null,null, null, ContactsContract.Contacts.DISPLAY_NAME + ″ COLLATE LOCALIZED ASC″);act.startManagingCursor(cur); if (cur.moveToFirst()) { int idColumn = cur.getColumnIndex(ContactsContract.Contacts._ID); int displayNameColumn = cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME); do {String contactId = cur.getString(idColumn); String disPlayName = cur.getString(displayNameColumn); int phoneCount = cur.getInt(cur.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER)); Log.i(″username″, disPlayName); if (phoneCount > 0) {Cursor phones = act.getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null,ContactsContract.CommonDataKinds.Phone.CONTACT_ID+ ″ = ″ + contactId, null, null); if (phones.moveToFirst()) {do {//遍歷所有的電話號碼 String phoneNumber = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); String phoneType = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.TYPE)); Log.i(″phoneNumber″, phoneNumber); Log.i(″phoneType″, phoneType); Contact cont = new Contact(disPlayName, phoneNumber,true); contactsMap.put(phoneNumber, cont);
3.3 地圖模塊
在該模塊功能實(shí)現(xiàn)過程中,首先調(diào)用百度地圖API實(shí)現(xiàn)地圖顯示,再通過JADE獲取聯(lián)系人的經(jīng)緯度信息,然后調(diào)用百度地圖顯示覆蓋物的方法,將聯(lián)系人的位置以氣泡的形式顯示在地圖上。點(diǎn)擊氣泡即可選中聯(lián)系人,然后點(diǎn)擊軌跡,即可啟動線程,記錄好友的移動軌跡;點(diǎn)擊跟蹤,即可鎖定視角,屏幕將跟隨好友位置的移動;點(diǎn)擊好友位置,即調(diào)用百度地圖的方向地理編碼,將獲取的經(jīng)緯度轉(zhuǎn)換為實(shí)際地理位置。地圖模塊功能部分代碼如下:
public void initOverlay(){ Drawable marker= getResources().getDrawable(R.drawable.blu_circle); mOverlay = new MyOverlay(marker,mapView); Map
啟動JADE服務(wù)器,記錄服務(wù)器的IP地址。在兩臺Android手機(jī)上安裝系統(tǒng)后打開應(yīng)用,進(jìn)入登錄界面,分別輸入JADE服務(wù)器IP地址、端口號,聯(lián)系人電話號碼和定位方式進(jìn)入系統(tǒng)應(yīng)用主頁面。系統(tǒng)應(yīng)用包括聯(lián)系人功能模塊和地圖顯示功能模塊。下面以系統(tǒng)的地圖顯示功能為例進(jìn)行測試。
點(diǎn)擊系統(tǒng)主界面的地圖定位選項(xiàng)卡,切換到地圖定位界面,如圖2所示。實(shí)際界面中用白色氣泡標(biāo)示出用戶當(dāng)前位置,用藍(lán)色氣泡標(biāo)示出聯(lián)系人的當(dāng)前位置。點(diǎn)擊選中藍(lán)色氣泡,點(diǎn)擊上方的功能按鈕,即可記錄好友運(yùn)動軌跡,實(shí)時(shí)跟蹤和獲取好友的位置信息。

圖2 地圖顯示界面
通過運(yùn)用Android技術(shù)、JADE開發(fā)框架、百度地圖API,開發(fā)了一款多人實(shí)時(shí)定位與交流的Android應(yīng)用系統(tǒng)。系統(tǒng)整體界面友好、層次分明、操作簡單。通過百度地圖的方法實(shí)現(xiàn)聯(lián)系人位置的顯示,可廣泛應(yīng)用于團(tuán)隊(duì)旅游、教育、子女老人看護(hù)以及公司員工管理等領(lǐng)域,實(shí)時(shí)掌握聯(lián)系人的位置動態(tài),彼此搭建一座溝通的橋梁。
References)
[1] 傅偉,高海俠,熊平.RIP路由協(xié)議實(shí)驗(yàn)的設(shè)計(jì)與實(shí)現(xiàn)[J].實(shí)驗(yàn)技術(shù)與管理,2012,29(5):127-129.
[2] 姚尚朗,靳巖.Android開發(fā)入門與實(shí)戰(zhàn)[M].北京:人民郵電出版社,2013.
[3] 薛琴.基于Packet Tracer的計(jì)算機(jī)網(wǎng)絡(luò)仿真實(shí)驗(yàn)教學(xué)[J].實(shí)驗(yàn)室研究與探索,2010,29(2):57-59.
[4] 李佐彬.Android開發(fā)入門與實(shí)戰(zhàn)[M].北京:機(jī)械工業(yè)出版社,2011.
[5] Bellifemine F,Caire G,Greenwood D.基于JADE的多Agent系統(tǒng)開發(fā)[M].程志峰,張蕾,陳佳俊,等譯.北京:國防工業(yè)出版社,2013.
[6] 徐明華.Java Web整合開發(fā)與項(xiàng)目實(shí)戰(zhàn)[M].北京:人民郵電出版社,2009.
[7] 孫鑫.Servlet/Jsp詳解[M].北京:電子工業(yè)出版社,2008.
[8] 舒賢華.基于Android平臺的手機(jī)Web地圖服務(wù)設(shè)計(jì)[D].大連:大連海事大學(xué),2009:5-8.
[9] 劉曉華,張健.Jsp應(yīng)用開發(fā)詳解[M].北京:電子工業(yè)出版社,2007.
[10] 耿祥義,張躍平.Jsp教程[M].北京:清華大學(xué)出版社,2007.
[11] 吳國仕.Android手機(jī)界面管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].北京:北京郵電大學(xué),2009:7-10.
[12] 熊剛.基于Android的智能手機(jī)的設(shè)計(jì)與實(shí)現(xiàn)[D].武漢:武漢理工大學(xué),2010:13-14.
[13] 林學(xué)森,周昊來.Android應(yīng)用程序開發(fā)權(quán)威指南[M].北京:電子工業(yè)出版社,2015.
[14] 邸春紅.Android服務(wù)系統(tǒng)開發(fā)[M].北京:人民郵電出版社,2015.
Design and realization of multi-people real time positioning and communication system based on Android platform
Chi Yuliang1, Gan Xinling1, Li Yong2
(1. Department of Information Engineering, Binzhou Institute, Binzhou 256600, China;2. Office of Academic Affairs, Binzhou Institute, Binzhou 256600, China)
The multi-people real time positioning and communication system on Android platform is designed and realized by applying JADE framework and Baidu map API technology. The testing results indicate that the system has achieved the main functions of multi-people real time positioning and tracking, navigation guide, online chat, query and sharing, treading track record, etc.
Android; JADE; multi-people positioning; Baidu map
2014- 12- 01 修改日期:2015- 03- 26
國家級大學(xué)生創(chuàng)新訓(xùn)練計(jì)劃項(xiàng)目(201410449005);山東省信息化戰(zhàn)略專項(xiàng)研究課題(2013EI235);濱州學(xué)院科研基金項(xiàng)目(BZXYG1308)
遲玉梁(1993—),男,山東即墨,本科生,研究方向?yàn)閃eb應(yīng)用層程序開發(fā)
E-mail:812129349@qq.com
李永(1982—),男,山東濱州,碩士,講師,主要研究方向?yàn)橛?jì)算機(jī)網(wǎng)絡(luò).
TP311.52
A
1002-4956(2015)9- 0160- 03