?

基于安卓平臺的手機定位軟件開發

2014-10-14 09:28吳麗淳
計算機與現代化 2014年9期
關鍵詞:窗體安卓密碼

吳麗淳,樊 爽

(天津財經大學信息科學與技術系,天津 300222)

0 引言

隨著社會進程的加快,越來越多的人全身心投入繁忙的工作中而忽視了對家中老人與年幼兒童的照顧,導致老人在馬路上遇險、兒童被拐賣的事件屢見不鮮。在這一社會背景下,大眾十分需要一種便攜、可靠的定位工具來隨時確認以上特殊人群的位置,確保安全?;谶@一目的,本文介紹可為定位模塊提供交互服務的軟件系統的設計思想。選用安卓系統作為開發平臺,結合百度地圖API提供定位、路線查詢等服務,十分符合當前的市場需求。

目前手機定位系統按提供服務的方式不同可以分為自有手機定位系統與公用定位系統2種。根據手機的不同功能可以分為短信版手機定位和WAP版手機定位。合理地使用這些定位系統,可以給生活或者工作提供很多便利,但現有的系統需要為被定位人購買軟件所要求應用系統的手機,并一直開啟該手機的上網功能,每月還需要支付軟件定位服務費,手機的耗電量和上網流量都比較高,且定位精確度不高,成本不容忽視。

為了解決當前定位系統存在的缺陷,本文采用北斗硬件設備代替手機提供定位支持,同時使用安卓系統客戶端和百度地圖API,設計制作可穿戴式的定位系統。本文是此系統軟件部分的設計介紹。

選用安卓平臺,是由于其擁有巨大的客戶群和前瞻性的發展思路。谷歌公司于2005年8月收購Android公司,幫助安卓平臺走上了飛速發展的道路。根據《2013年第三季度智能手機市場調查》顯示,安卓手機在2013年三季度的出貨市場占有率達到了81.9%,較去年同期增長 9.3%[1]。2013 年 11 月,Android 4.4開始面向用戶提供升級服務。除了外觀給人耳目一新的感覺外,新版系統在內存、語音搜索等方面也做出提升。另一方面,同樣發布系統升級的IOS 7在操作控制方面向谷歌靠攏,將安卓系統中好的功能和特點融合到自己的系統中,這一點也說明了安卓系統的成功之處[2]。隨著 Android Wear的出現,谷歌對新版安卓系統的內存優化,顯然是希望系統能更好地在智能穿戴設備上使用,為安卓智能手表提供類似耐克+FuelBand的功能,并使用自己研發的軟件占據市場[3]。在不斷的改革創新中,安卓在為廣大老客戶提供優質服務的同時,繼續開拓潛在市場,相信它在今后會有更好的發展。

使用百度地圖API提供地圖支持,要比谷歌地圖更易操作。另外,百度地圖提供的線路查詢、地理圍欄等技術使得系統開發更具新意,也更加實用。百度地圖API免費為開發者提供一套由Java語言編寫的應用程序接口,包括 JavaScript API、Web服務 API、Android SDK、LBS云等多種開發工具與服務,提供基本地圖展現、搜索、定位、逆地理編碼、路線規劃、LBS云存儲等功能,適用于PC端、移動端、服務器等多種設備[4]。

LBS(Location-Based Services)又稱位置服務,國內外的LBS發展情況不一。從整體來看,歐洲的位置服務發展的比較先進,而其提供的服務基本以實用為主,故歐洲在增值業務的推廣方面成效不大。全球許多國家高度重視LBS的發展,而國內的LBS市場相比起步較晚。2002年11月中國移動首次開通位置服務,2009年5月又開通了飛信品牌下的“位置服務”、“位置交友”等,隨后,聯通、電信也啟動類似業務。隨著前期普及工作的深化、信息技術的發展,以及不斷完善的衛星定位技術和地圖測繪技術,地理位置信息逐步發展為民用且具備多尺度、高精度、大信息量、實用性強等特點,使得LBS業務成為大眾化的服務之一。

1 系統設計與實現

1.1 功能設計

定位軟件負責與用戶直接交互,故此界面的友好性和方便性十分重要,另外還要將用戶操作轉化為相應命令,完成相應服務。根據需求分析,功能設計為以下部分:

1)登錄:初始情況的登錄密碼為空,設置過密碼后,再次登錄需要輸入正確密碼才可進入。

2)系統主窗體:此主窗體是程序的核心,用戶可通過主窗體大致掌握程序具有的功能,并且在完成各個模塊的操作后均可跳回主窗體。

3)位置顯示:該模塊就是把定位模塊攜帶者身處的位置在地圖上顯示出來,通過獲取定位模塊攜帶者的經緯度信息,在地圖上查找到對應地點,并用點表示,然后在地圖上添加一個覆蓋物,表明定位模塊攜帶者所處的地點。

4)安全速度設定:用戶可分別設定最高速度與最低速度,當定位模塊攜帶者的移動速度超過設定值時,用戶可收到報警提示。

5)查看與定位模塊的通訊記錄:針對在定位模塊中存放SIM卡的情況,用戶可接收其發來的短信。

6)密碼設定:已登錄的用戶可在此模塊中修改登錄密碼。

7)公交查詢:地鐵服務的附屬功能,用戶輸入城市名和公交線號碼,便可查詢公交站的分布情況。

1.2 軟件實現

1.2.1 登錄模塊

登錄模塊通過if((pwdDAO.getCount()==0||pwdDAO.find().getPassword().isEmpty())&&txtlogin.getText().toString().isEmpty())比較在EditText中的信息與數據庫中存儲的密碼是否一致,來實現登錄功能。效果是:若密碼正確,則執行{startActivity(intent);}跳轉到主功能界面,若錯誤,則提示“輸入信息錯誤,請重新輸入”。

1.2.2 系統主窗體

實現方法是創建網格視圖(GridView)對象,放置代表各個子模塊的圖像視圖和對應的模塊標題。單擊圖像視圖,在事件監聽器中使用switch,case方法匹配數組腳標,在case語句中使用intent=new Intent(MainActivity.this,PositionActivity.class);startActivity(intent);方法跳轉到相應子模塊中。

1.2.3 位置顯示

當用戶移動一段距離后,就會觸發onLocation-Changed()方法,在這個方法里實現地圖移動以及圖層的繪制操作,從而實現定位效果。

在XML文件中使用了線性布局,并在其中放置一個MapView地圖顯示控件,用來顯示基礎地圖。在Java文件中添加位置監聽器LocationListener,實現onLocationChanged()方法。當用戶的位置發生變化,回調onLocationChanged()方法,把地圖移到自己所在位置。

在onResume()方法中用LocationManager類中的requestLocationUpdates()方法來注冊監聽器Location-Listener,那樣就可以在程序啟動的時候開啟定位服務。圖層覆蓋物標注,就是地圖中的的藍色圈圈。

1.2.4 安全速度設定

2個速度的存儲涉及數據的存儲方法。在這一方面,安卓平臺主要使用SQLite Databases(使用數據庫)、External Storage(共享到外部存儲)、Shared Preferences(以鍵值對的方式存儲)和本程序選用的Internal Storage方式,即保存私有數據到設備內部存儲。不同方法有著各自的特點,比如數據庫方法輕量級、獨立性、跨平臺,Shared Preferences存儲操作方便、快捷等,所以開發者應該根據程序自身數據存儲的需要選擇存儲方式。[5]

使用Internal Storage方法,數據可寫入文件中,不僅能存儲到系統中,也可保存到如SD卡的外設。文件僅對此程序可見,其他程序不可見,若刪除此程序,存儲文件也會同時刪除掉。不同于使用數據庫需要建立表格、編寫SQL語言等的麻煩,不同于Shared Preferences方法只存儲boolean、int等基本數據類型,Internal Storage方法存儲更加隨意,存儲量也較其他方法大,缺點是要一次性把文件中的數據都讀取出來,處理相對困難些。但在存儲少量數據時,其優點還是明顯大于缺點的[6]。

存儲的主要代碼為:

點擊“當前設置”按鈕,調用read()方法讀取文件中的存儲值,讀取完成后關閉文件流,用TextView的setText()方法進行顯示。

運行效果如圖1和圖2所示。

圖1 安全速度設定模塊

圖2 安全速度設定模塊

在TextView中輸入2個速度后單擊“設置”,2個數值便會存儲到文件中了,同時會顯示消息窗口,提示已設置成功(見圖1)。單擊“當前設置”按鈕,在最低值與最高值2欄可顯示之前的設定(見圖2)。

1.2.5 查看與定位模塊的通訊記錄

這里使用Intent和URI實現了單擊事件發生后從主窗體直接跳轉到短信程序中。URI為通用資源標識符Universal Resource Identifier的簡稱,代表要操作的數據。關于URI類中的parse()方法,官方文檔解釋其作用為“通過解析給定的URI字符串創建一個URI”,由此,使用此方法可以把一個字符串解析為URI,繼而在下一方法中使用。[7]

Intent()方法的2個參數,可以是跳轉的活動名字,也可以是Intent類定義的動作常量和數據,這里使用后者。ACTION_SENDTO是短信動作常量,數據為Uri.parse(),URI中的數據是短信的前綴 sms加上通訊電話。這里的5556為模擬器的編號,在使用SIM卡時可將發信人號碼變更為其他手機號。

在主窗體中,單擊“收到的消息”按鈕便會執行如下代碼:

運行效果如圖3所示。

圖3 查看歷史信息模塊

“5556”代表與定位模塊通信的號碼,若后期號碼變更,修改parse的相應參數即可跳轉到新號碼。

1.2.6 密碼設定

在設置按鈕的單擊事件監聽器中,重寫onClick方法更新數據庫信息。自定義類PwdDAO定義了在數據庫中執行添加密碼的操作add()和修改密碼的操作update()。對txtpwd編輯框中的文本信息進行比對后將執行添加或修改操作,同時toast提供消息顯示,提示密碼設置成功。主要代碼如下:

1.2.7 公交查詢

以檢索天津市公交路線662的poi為例,獲取公交路線的uid,調用方法mSearch.poiSearchInCity("天津","662");接著實現 MySearchListener的 onGet-PoiResult,獲取該公交路線的uid,根據此uid發起公交線路檢索,使用 mSearch.busLineSearch(mCityName,curPoi.uid)方法。

最后通過實現MySearchListener的onGetBusDetailResult()方法,展示檢索結果并在地圖上做標記,部分代碼如下:

運行效果如圖4所示。

圖4 公交查詢模塊

該界面有2個編輯框,一個為輸入要查詢的城市,一個為要查詢的公交線路,單擊“開始”按鈕后,在地圖上標識出該公交的起始點、線路和站名。

2 結束語

本文介紹一款定位軟件的開發方法。系統基于安卓平臺完成開發,使用內置數據庫、保存私有數據到設備內部存儲、URI等方法,實現位置顯示、安全速度設定、通信記錄查詢、公交線路查詢和密碼設置等功能。系統的優點是頗具創新性,符合用戶需求,且將傳統的手機提供位置信息改為使用定位模塊加SIM卡的方法。此外,利用百度地圖API進行開發,除了公交查詢,有其他LBS服務可供后期使用,這一點是系統的不足之處,也是后期繼續開發的研究方向。

[1]林政偉.安卓在華市占率每季增3%恐加劇智能手機同質化競爭[N].通信信息報,2013-12-11(B05).

[2]梁景裕.用戶體驗大不同?IOS、Android、Windows系統升級全面看[J].消費電子,2013(12):55-61.

[3]張勇.谷歌推出可穿戴設備專用系統AndroidWear.CSDN[DB/OL].http://www.csdn.net/article/2014-03-19/2818829,2014-03-19.

[4]張燕丘.Android手機定位與地圖設計與實現[D].長春:吉林大學,2013.

[5]孫更新,邵長恒,賓晟,等.Android入門到精通[M].北京:電子工業出版社,2011.

[6]王國輝,李偉.Android開發寶典[M].北京:機械工業出版社,2012.

[7]Android.Android.Uri[DB/OL].http://developer.android.com/reference/android/net/Uri.html,2014-04-18.

[8]崔和宏.移動定位技術概述[J].科技信息,2008(20):19-23.

[9]段琳.深入剖析Android Activity[J].中國新技術新產品,2011(16):33-34.

[10]公磊,周聰.基于Android的移動終端應用程序開發與研究[J].計算機與現代化,2008(8):85-89.

[11]王進.實時公交查詢系統的優化設計和實現[D].北京:北京郵電大學,2013.

[12]鄭邐.基于Android平臺的無線點菜系統的設計與實現[D].濟南:山東大學,2012.

[13]張雪英,申琪君,龍毅.網絡地圖評價指標體系及其應用[J].地球信息科學,2009,11(3):355-362.

[14]鄭穎.常用移動定位技術的研究和應用[J].通信技術,2001(8):79-81.

[15]李洪力,楊華,張婷.北斗衛星導航系統市場應用分析研究[J].電子世界,2014(1):16-17.

[16]方勝.基于Android的車載移動終端系統的硏究與開發[D].廣州:廣東工業大學,2012.

猜你喜歡
窗體安卓密碼
iPhone不卡的秘密曝光:安卓也能享受
密碼里的愛
文物表情包
試談Access 2007數據庫在林業檔案管理中的應用
密碼抗倭立奇功
一種基于安卓系統的手機側抓包分析方法
密碼藏在何處
奪命密碼
安卓L未至安卓M來了!安卓首泄漏M系統
巧設WPS窗體控件讓表格填寫更規范
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合