沈 漪,陳曉男
(無錫科技職業(yè)學院, 江蘇 無錫 214028)
[文章編號]1671-802X(2016)04-0004-03
基于Android的防走失功能實現研究
沈 漪,陳曉男
(無錫科技職業(yè)學院, 江蘇 無錫 214028)
針對無認路能力的老人小孩在走失后不能準確描述自己的方位,提出了基于短信的跟蹤定位功能的實現方案。該程序基于Android平臺,利用移動短信的便利、Google地圖的定位功能,實現了只需安裝客戶端,便能實時了解無識路能力的老人、小孩及其他弱勢群體的方位。經過一系列的測試,能在大部分手機實現。
Android平臺;短信;定位
隨著智能手機的普及,各通信公司網速的提升和手機流量資費的下降,導航和定位功能的使用越來越方便,但一般僅局限于對手機使用者本人的定位和導航。對他人的定位功能往往要在被定位人和定位人的手機上分別安裝客戶端應用程序,還需要服務端應用程序的支持。本文基于Android平臺,借助Android平臺上集成的定位功能,利用短信,實現一個簡易的位置跟蹤應用程序。只要把該應用程序安裝在被定位人的Android手機上,向該手機發(fā)送包含特殊文本的短信,該手機將自動發(fā)回一條包含了其所在位置的短信。該應用程序可以用來跟蹤了解孩子或者獨自生活的老人的位置。
該應用僅需設計被定位人手機端程序,該程序需要包含兩個模塊,首先是短信監(jiān)聽模塊,其次是位置監(jiān)聽模塊。如圖1所示。
圖1 程序總體結構圖
該應用程序的思路如下:假設被定位人手機具有定位功能。查看定位人手機發(fā)送含有特殊標識的短信給被定位人手機,該手機接收到短信后,進行自我定位,并將自己位置的經緯度值以短信方式發(fā)回查看人手機并結束自我定位,查看人接收后,可在百度地圖輸入經緯度值,了解被定位人的位置信息。
該定位算法的偽代碼如下:假設查看人的手機號碼為senderTel,發(fā)送的內容為msg,短信特殊文本為”location?“,定位信息為locString。
(1)send(msg)//查看人發(fā)送短信
(2)check(msg)//被定位人監(jiān)聽短信并判斷監(jiān)聽短信是否含有特殊標記
(3)if(msg startswith(“l(fā)ocation?”))//如果短信以“l(fā)ocation?”開頭
request locationListener //啟動位置監(jiān)聽
(4)send(locString)//將定位信息發(fā)送到查看人手機
(5)remove locationListener//結束位置監(jiān)聽
(一)短信消息傳遞
本應用中兩處涉及到消息傳遞。首先是對手機收到的消息進行截取并分析是否包含指定文本,若包含則啟動定位。在定位成功后,還要通過消息傳遞把位置信息發(fā)回查看者手機。
1.接收消息并分析
Android平臺支持在應用程序中發(fā)送或接收短信消息。在本應用程序中需要接收短信并提取分析,這要借助于Android平臺的廣播監(jiān)聽功能組件BroadcastReceiver。BroadcastReceiver組件使應用程序接收其他應用程序使用sendBroadcast()方法發(fā)送的意圖(Intent)。當接收到一個意圖對象時,調用onReceive()方法(BroadcastReceiver接口中的方法)。也就是onReceive()方法在收到一個傳入的短信消息時被觸發(fā)。短信消息通過一個Bundle對象包含在Intent對象中(onReceive()方法的第二個參數)。每收到一條短信消息,onReceive()方法會被調用一次。因而本應用程序中對短信消息的分析代碼應在BroadcastReceiver的onReceive()方法中實現。如下所示:
此外,需要在配置文件里設置接收信息許可,如下所示:
為了使程序能監(jiān)聽手機系統(tǒng)接收短信的系統(tǒng)廣播事件,必須進行注冊,注冊分靜態(tài)注冊與動態(tài)注冊,本應用使用靜態(tài)注冊,如下所示:
做了這樣的注冊后,即使應用在未開啟狀態(tài),程序也能對接收短信做出響應。
2.發(fā)送消息
Android平臺除了可以接收短信,還可以用編程的方式發(fā)送短信消息,也就是應用程序可以自動發(fā)送短信消息給收信人,而無須手機用戶干預。這樣的功能是通過SmsManager類實現的。先調用其靜態(tài)方法getDefault()獲得一個SmsManager對象;然后,使用SendTextMessage()方法發(fā)送短信消息,代碼如下所示:
此外,還需在配置文件中設置發(fā)送信息許可,如下所示。
(二)定位技術
本應用中,在收到含有指定文本的信息時,將啟動定位,其實質就是注冊位置監(jiān)聽。然后,在位置監(jiān)聽器中設置發(fā)回位置信息的代碼。最后,停止定位。涉及到定位功能,需要在配置文件中設置定位許可,代碼如下:
1.定位功能啟動
Android系統(tǒng)提供了LocationListener監(jiān)聽器接口,可以監(jiān)聽設備位置信息的變化。通過LocationManager的requestUpdates()方法注冊監(jiān)聽器,這樣當設備位置發(fā)生變化時監(jiān)聽器就會被觸發(fā),進而調用執(zhí)行接口中的onLocationChanged()方法??紤]到被定位人不一定處于空曠位置,本應用選擇使用網絡位置提供商來獲取位置信息,所以需要設備連接到網絡。相比使用GPS獲取位置信息,精度上會有所降低,但適用度更高。
啟動定位代碼如下所示:
2.獲取當前位置信息
在 LocationListener 監(jiān) 聽 器 接 口 的onLocationChanged()方法的參數中包含了存放位置信息的變量loc。只要從該變量中通過get方法獲取相應的經緯度和地址信息。
3.停止定位
在發(fā)送位置短信后,將停止對被定位人的定位,停止定位代碼如下:locmag.removeUpdates(locListener);
將該應用安裝在手機1上后,先開啟WIFI或移動網絡,用手機2發(fā)送包含“l(fā)ocation?”文本的信息,手機1會顯示提示信息“將發(fā)出短信”,選擇允許并不再通知。手機2將接收到手機1的位置信息。由于使用的是網絡定位,位置有一定的誤差。如果希望減少誤差并且被定位人位于空曠地區(qū),可以選擇用GPS定位,但仍然會有一定的誤差。
經過在小米、華為、聯想、OPPO等手機上的一系列測試,該應用能在大部分手機上成功使用。
[1]Wei-Meng Lee..Android 4編程入門經典—開發(fā)智能手機與平板電腦應用[M].清華大學出版社,2012.
[2]Rick Oogers,JohnLombardo,.等.Android應用開發(fā)[M].人民郵電出版社,2010.
[3]代 敏,張 晶.基于Android平臺的嵌入式軟件“混合”定位控制策略研究[J].科學技術與工程,2012,(5).
(責任編輯:魏樹峰)
Research on Anti-lost Function Based on Android
SHEN Yi,CHEN Xiao-nan
(Wuxi Vocational College of Science and Technology,Wuxi 214028,China)
For the missing elderly and children who can not accurately describe their position,a tracking and postioning program based on short message service (SMS)is put forward.Based on the Android platform,the program with installation of client makes good use of the convenience of SMS and the positioning function of Google maps to accurately locate the elderly,children and other vulnerable groups. A series of tests show that the function can be realized on most mobile phones.
Android platform;SMS;location
TP399
A
2016-06-20
沈 漪(1982-),女,江蘇無錫人,講師,碩士,研究方向:軟件技術開發(fā).E-mail:symnb6742@163.com.
無錫市科協(xié)軟科學課題(KX15-13-19)