(转)基于即时通信和LBS技术的位置感知服务(一):提出问题及解决方案
一、前言、提出問題
?????? 公司最近舉行2011年度創新設計大賽,快年底了正打算寫寫2010年以來Android開發的心得與經驗,正好同事出了個點子:假如A和B兩個人分別在不同的地點,能不能實現這樣的功能,讓A和B之間可以互相感知對方的位置信息。
?????? 于是整理了一下思緒,說白了分解開來就是兩個方面的問題:一、實現信息的即時傳遞,二、實現基站/wifi、GPS的定位。
?????? 1. 實現消息的即時傳遞:說到這個問題大家應該能聯想到QQ、MSN、Gtalk這些即時通信軟件。
?????? 2. 定位:這個讓人聯想到時下非常火的LBS服務(Location Based Services)。有關LBS詳細介紹請移步百度百科http://baike.baidu.com/view/152851.htm
?
二、應用場景
?????? 即時通信和LBS兩個熱門的技術引出了我們的主角:位置感知服務 (Location-aware service)。那么,有哪些與之有關的場景呢?下面列出了自己想到的幾個例子(還有很多,大家可以充分發揮自己的想象力):
?????? 1. 手機制作商通過在設備中內置一個定位服務來跟蹤手機的位置。比如,蘋果官方推出的"Find My iPhone"手機定位服務,可通過Mobile Me帳號來定位iPhone手機目前的位置,可幫助失主找回自己的iPhone手機。
?????? 2. 你和朋友一起去郊區旅游,會不會碰到走散的時候?如果這個時候你有一款手機(Android、iPhone、Symbian或其他手機)并且安裝了一個可以實現朋友之間位置實時共享并把大家的所在位置顯示在地圖上的應用,那問題就好辦了。
?????? 類似的還有朋友之間自駕游、人員跟蹤、突發事件、急救等領域都能派上用場。
?
三、尋找問題的解決方案
?????? 1. 關鍵的問題:即時通信。因為前面的項目積累了基于位置應用的相關經驗,所以定位不算一個問題。需要花費比較多精力的地方是實現消息的即時傳遞。
?????? 2. 分析需求:根據提出的問題,A發出的信息需要實時的到達B,反過來就是B發出的信息也要實時到達A。對這種雙工實時的通信目前還沒有相關的項目經驗。
????? 3. 最簡單的實現可能用輪詢(Polling)了,在這個問題中,輪詢意味著使用一種RESTful Web服務(目前我們手機項目普遍使用的服務器接口方式)來為A或B獲得(GET)對方的更新。但這種方式有缺點:一則增大服務器的負擔,想想如果每個客 戶端每隔1分鐘訪問服務器,而大多數情況下服務器是沒有更新數據的,對比起來服務器的負擔就很浪費了,1分鐘的時間又很難做到實時的更新;二則對于移動設 備,例如手機這種客戶端,輪詢浪費電源這個手機最寶貴的資源。
?????? 4. 解決的方式是長連接。PubSub(Publish/Subscribe,發布/訂閱)是一種使用異步消息傳遞協議的架構性方法,其中發布者和任何訂閱者 都是解耦的。在需要向大量客戶端發送更新通知的場合下,這些特征使得PubSub成為一種合適的可伸縮性選擇。
?????? 5. 經過搜索相關資料,決定嘗試使用一種基于XMPP[Extensible Messaging and Presence Protocol,可擴展消息傳遞和現場協議]的PubSub服務
微軟企業開發技術 | 移動開發(Google Android、Windows Mobile)技術| 嵌入式系統設計與開發 | JAVA開發轉載于:https://www.cnblogs.com/sandea/p/3782221.html
總結
以上是生活随笔為你收集整理的(转)基于即时通信和LBS技术的位置感知服务(一):提出问题及解决方案的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Spread for Windows F
- 下一篇: 安卓软件栈