宋崇生
(華僑大學(xué)信息化建設(shè)與管理處 福建 廈門 361021)
隨著移動(dòng)通訊產(chǎn)業(yè)的發(fā)展,手機(jī)的生產(chǎn)和使用量有了大幅的提高。如何進(jìn)一步提升手機(jī)的應(yīng)用價(jià)值、開發(fā)新的功能,已成為手機(jī)發(fā)展的熱點(diǎn)。GPS技術(shù)具有廣闊的應(yīng)用前景,拓展手機(jī)GPS功能將成為未來幾年移動(dòng)程序開發(fā)的新趨勢(shì)。當(dāng)前,手機(jī)GPS已在個(gè)人導(dǎo)航定位方面發(fā)揮了巨大作用。
下面是4種可以實(shí)現(xiàn)基于web的實(shí)時(shí)事件通知的方法[1]:
1.1.1 HTTP拉取方式:在這種傳統(tǒng)的方法中,客戶端以用戶可定義的時(shí)間間隔去檢查服務(wù)器上的最新數(shù)據(jù)。這種拉取方式的頻率要足夠高才能保證很高的數(shù)據(jù)精確度,但高頻率可能會(huì)導(dǎo)致多余的檢查,從而導(dǎo)致較高的網(wǎng)絡(luò)流量對(duì)于手機(jī)有限的流量來說是個(gè)致命方法。而另一方面,低頻率則會(huì)導(dǎo)致錯(cuò)過更新的數(shù)據(jù)。理想地,拉取的時(shí)間間隔應(yīng)該等于服務(wù)器狀態(tài)改變的速度。
1.1.2 HTTP流:這種方法由存在于不間斷的HTTP連接響應(yīng)中或某個(gè)XMLHttpRequest連接中的服務(wù)器數(shù)據(jù)流所組成。
1.1.3 反轉(zhuǎn)AJAX:服務(wù)流應(yīng)用到AJAX,就是所謂的反轉(zhuǎn) AJAX或者COMET。它使得服務(wù)器在某事件發(fā)生時(shí)可以發(fā)送消息給客戶端,而不需要客戶端顯式的請(qǐng)求。目標(biāo)在于達(dá)到狀態(tài)變化的實(shí)時(shí)更新。COMET使用了HTTP/1.1中的持續(xù)連接的特性。
1.1.4 長(zhǎng)時(shí)間輪詢:也就是所謂的異步輪詢,這種方式是純服務(wù)器端推送方式和客戶端拉取方式的混合。它是基于BAYEUX協(xié)議的。這個(gè)協(xié)議遵循基于主題的發(fā)布——訂閱機(jī)制。在訂閱了某個(gè)頻道后,客戶端和服務(wù)器間的連接會(huì)保持打開狀態(tài),并保持一段事先定義好的時(shí)間。如果服務(wù)器端沒有事件發(fā)生,而發(fā)生了超時(shí),服務(wù)器端就會(huì)請(qǐng)求客戶端進(jìn)行異步重新連接。如果有事件發(fā)生,服務(wù)器端會(huì)發(fā)送數(shù)據(jù)到客戶端,然后客戶端重新連接。
在Android中,Broadcast是一種廣泛運(yùn)用的在應(yīng)用程序之間傳輸信息的機(jī)制。發(fā)送Broadcast和使用Broadcast Receiver過濾接收的過程如下[2]:
首先,在需要發(fā)送信息的地方,把要發(fā)送的信息和用于過濾的信息裝入一個(gè)Intent對(duì)象,然后,通過調(diào)用 Context.send Broadcast()、send Order Broadcast()或 send Sticky Broadcast()方法,把 Intent對(duì)象以廣播方式發(fā)送出去。
當(dāng)Intent發(fā)送以后,所有已經(jīng)注冊(cè)的Broadcast Receiver會(huì)檢查注冊(cè)時(shí)的Intent Filter是否與發(fā)送的Intent相匹配,若匹配則就會(huì)調(diào)用Broadcast Receiver的on Receive()方法。所以當(dāng)我們定義一個(gè)Broadcast Receiver的時(shí)候,都需要實(shí)現(xiàn)on-Receive()方法。
手機(jī)地圖服務(wù)是指在手機(jī)上利用GPS或者網(wǎng)絡(luò)實(shí)現(xiàn)精確定位,并使用WAP方式或客戶端方式,通過移動(dòng)通信網(wǎng)絡(luò)與手機(jī)地圖應(yīng)用服務(wù)器之間的互聯(lián)通信,查找自己的位置、搜索地點(diǎn)、查詢行車路線的一種與地理信息相關(guān)的位置業(yè)務(wù)。用戶在查詢過程中,不僅可以得到相關(guān)的文字信息,還可以通過手機(jī)終端友好的人機(jī)界面得到直觀的地圖信息。手機(jī)地圖查詢系統(tǒng)的結(jié)構(gòu)如圖1所示。
圖1 手機(jī)地圖查詢系統(tǒng)結(jié)構(gòu)
手機(jī)端地圖是安裝在手機(jī)上的簡(jiǎn)易地圖文件,詳細(xì)的地圖信息,要通過發(fā)送到網(wǎng)絡(luò)端應(yīng)用服務(wù)器的查詢命令解析執(zhí)行后,再下發(fā)到終端進(jìn)行異步下載。
移動(dòng)終端的定位是通過檢測(cè)移動(dòng)終端和基站之間傳播信號(hào)的特征參數(shù)來獲得其幾何位置,根據(jù)進(jìn)行定位估計(jì)位置的不同分為兩種:基于移動(dòng)終端定位和基于網(wǎng)絡(luò)定位。GPS是由美國(guó)國(guó)防部在20世紀(jì)70年代開始聯(lián)合研制的新型衛(wèi)星導(dǎo)航系統(tǒng),歷時(shí)20年,耗資200億美元,于1994年全面建成。它采納了子午儀系統(tǒng)的成功經(jīng)驗(yàn),具有全球性,全天候、高精度三維定位的特點(diǎn)。GPS系統(tǒng)主要由三大部分組成:GPS衛(wèi)星星座(空間部分)、地面監(jiān)控系統(tǒng)(控制部分)和GPS信號(hào)接收機(jī)(用戶部分)。GPS的定位原理就是根據(jù)高速運(yùn)動(dòng)的衛(wèi)星瞬間位置作為已知的數(shù)據(jù),采用空間距離后方交會(huì)的方法,確定待測(cè)點(diǎn)的位置。
本系統(tǒng)實(shí)現(xiàn)了好友的地理位置信息通過后臺(tái)的推送服務(wù),更新并發(fā)送給其好友,并在客戶端上通用Google地圖上顯示出來。只要用一個(gè)帳號(hào)和密碼登錄,使用者就可以自動(dòng)生成一個(gè)好友的地理位置列表,好友列表和好友記錄列表,在這項(xiàng)列表里,使用者可以根據(jù)好友的名字定位好友。用戶還可以在當(dāng)前的地理位置發(fā)送一條地理記錄,該用戶的好友便可得到在該位置上的這條新記錄,并且可以查看記錄的評(píng)論,對(duì)記錄進(jìn)行評(píng)論。
使用者可以跟據(jù)用戶的帳號(hào)查找好友,并向其發(fā)送添加好友請(qǐng)求,若好友不在線,服務(wù)器保存此條請(qǐng)求信息,等到一下次該被請(qǐng)求的好友上線之后發(fā)送給該好友,發(fā)送之后服務(wù)器將此條請(qǐng)求信息刪除。
客戶端是手機(jī)應(yīng)用程序,主要包括數(shù)據(jù)接收,數(shù)據(jù)處理,界面更新。其原理圖如圖2所示。
圖2 客戶端結(jié)構(gòu)
當(dāng)手機(jī)端的Comet Client接收到服務(wù)器發(fā)送來的數(shù)據(jù)后,將數(shù)據(jù)交給Data Process線程進(jìn)行處理,Data Process判斷數(shù)據(jù)并對(duì)數(shù)據(jù)進(jìn)行分類處理,然后更新Cache類里面的靜態(tài)數(shù)據(jù)。 最后,Data Process發(fā)送廣播給 Activity(界面),Activity根據(jù)當(dāng)前的狀態(tài)判斷是否馬上更新界面。
服務(wù)端負(fù)責(zé)接收用戶的HTTP請(qǐng)求,并推送給好友相關(guān)的信息,其主要功能有:用戶上線處理,下線處理,更新地理位置,用戶聊天,用戶注冊(cè),發(fā)送記錄信息,修改密碼,添加好友,同意好友添加,拒絕好友添加。
處理用戶上線:用戶請(qǐng)求登錄,得到我的所有信息,并讓所友在線好有得到我登錄的信息和我最新的地理位置。
更新地理位置:當(dāng)用戶的地理位置發(fā)生改變時(shí)通知其在線的好友該用戶最新的地理信息,并讓新上線的好友得到該用戶的最新地理信息。
用戶聊天:用戶可以跟每個(gè)在線好友發(fā)送聊天信息,若該好友不在線則給予提示。
用戶發(fā)送記錄信息:用戶可以隨時(shí)地發(fā)送一條記錄信息,該記錄信息對(duì)應(yīng)當(dāng)前的地理位置并且讓好友知道此條記錄信息。
用戶注冊(cè):用戶填寫完注冊(cè)信息后,給用戶生成一個(gè)對(duì)應(yīng)的帳號(hào)。
添加好友:用戶根據(jù)帳號(hào)發(fā)送添加好友請(qǐng)求,若該目標(biāo)用戶在線,則他能馬上收到添加請(qǐng)求,若該用戶不在線,則等到該用戶上線也能收到該請(qǐng)求。
同意添加好友請(qǐng)求:用戶收到該添加好友請(qǐng)求時(shí),進(jìn)行回復(fù)同意或拒絕,若同意則兩人成為好友,并得到對(duì)方的信息并顯示在好友列表里面,對(duì)方若在線也同樣馬上得到我的信息并顯示在好友列表上。
刪除好友:用戶選擇刪除好友后,該好友馬上在我的好友列表上消失,并且通知對(duì)方已解除好友關(guān)系,若對(duì)方不在線,上線之后也能收到此消息。
用戶表存放所有用戶的信息,每個(gè)用戶對(duì)應(yīng)表中的一行,如表1所示。
表1 用戶表
表2 好友關(guān)系表
表3 消息表
表4 事件表
本文針對(duì)手機(jī)GPS功能、地圖功能發(fā)展空間巨大的現(xiàn)狀,提出了基于Android平臺(tái)來設(shè)計(jì)GPS好友定位系統(tǒng)的方案。Android是一個(gè)多功能平臺(tái),對(duì)網(wǎng)絡(luò)等技術(shù)都有很好的支持,基于Android的GPS應(yīng)用、地圖應(yīng)用,可以進(jìn)一步與網(wǎng)絡(luò)相結(jié)合,實(shí)現(xiàn)數(shù)據(jù)的實(shí)時(shí)上傳,以達(dá)到地理信息共享的目的。隨著計(jì)算機(jī)和定位技術(shù)的飛速發(fā)展,全球定位系統(tǒng)(GPS)和地圖服務(wù)得到了更廣泛的重視和應(yīng)用,將地圖有效地與位置定位技術(shù)相結(jié)合,應(yīng)用前景十分廣闊。
[1]IBM文檔庫.Comet:基于 HTTP長(zhǎng)連接的“服務(wù)器推”技術(shù)[Z].2007.
[2]吳亞峰,索依娜.Android核心技術(shù)與實(shí)例詳解[M].電子工業(yè)出版社,2010.