国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于百度地圖和定位技術(shù)對(duì)手機(jī)通訊錄管理方案

2017-04-15 11:30:32羅玲彭誠(chéng)
電腦知識(shí)與技術(shù) 2016年34期
關(guān)鍵詞:Android系統(tǒng)

羅玲+彭誠(chéng)

摘要:該文設(shè)計(jì)了一種基于百度地圖對(duì)Android系統(tǒng)智能手機(jī)通訊錄管理方案。該方案首先查詢獲得電話號(hào)碼的歸屬地信息,然后將通訊錄按照相同歸屬地分組顯示,之后再利用百度地圖位置定位功能,在地圖上顯示出各個(gè)城市聯(lián)系人分布,并可進(jìn)一步查看手機(jī)通訊錄中聯(lián)系人具體位置。通過(guò)定位功能,隨時(shí)獲取手機(jī)持有者的當(dāng)前位置,并顯示出通訊錄中當(dāng)前位置附近有哪些聯(lián)系人。與此同時(shí),再給出智能提示,并通過(guò)地圖信息查看從自己當(dāng)前位置到所要去的聯(lián)系人位置的具體路線信息等。該方案對(duì)手機(jī)通訊的信息進(jìn)行有效管理,為手機(jī)用戶好友間聯(lián)系、聚會(huì)以及其他日常生活帶來(lái)便利。

關(guān)鍵詞:Android系統(tǒng);手機(jī)通訊錄;百度定位;百度地圖

中圖分類號(hào):TP311.5 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2016)34-0108-04

Abstract: This paper designs a scheme of smart phone address book management based on baidu map. Firstly, it inquires number attribution, then, it divides the address book into groups according to number attribution. After that, it shows cities contact distribution on the map by using the positioning function of the Baidu map. Furthermore, it can look over the location of the mobile phone contact. It can show the holders current location and show who is nearby in the mobile phone address book contacts. At the same time, it can give Smart tips and show the specific routes between your current location and the contacts nearby. In a word, the scheme brings much convenience to communication, meeting and other daily life by managing mobile communication information effectively.

Key words: Android system; phone contact; Baidu map; Baidu positioning

1 背景

定位技術(shù)和地圖技術(shù)已經(jīng)被廣泛應(yīng)用車載,通信等行業(yè),尤其是近年來(lái)蓬勃發(fā)展的Android操作系統(tǒng)平臺(tái)下的應(yīng)用,如電子地圖、導(dǎo)航、地理位置服務(wù)(LBS)等。目前,搭載Android操作系統(tǒng)的智能手機(jī)是當(dāng)前手機(jī)行業(yè)的主要陣營(yíng)之一。在手機(jī)的應(yīng)用軟件中,通訊錄軟件是任何手機(jī)都離不開的重要應(yīng)用。通訊錄存儲(chǔ)了聯(lián)系人姓名,電話,地址等信息。結(jié)合當(dāng)前“數(shù)據(jù)化”,“信息化”的發(fā)展背景,如何對(duì)手機(jī)通訊的信息進(jìn)行有效管理,這對(duì)提高用戶辦公效率以及生活便利等方面都具有重要意義,例如用戶在出差或者旅游時(shí)及時(shí)查看當(dāng)?shù)氐穆?lián)系人情況,更好進(jìn)行活動(dòng)安排等。

2 總體目標(biāo)

基于電話號(hào)碼歸屬地查詢可以判斷出聯(lián)系人所在的城市這一前提條件,并結(jié)合Android平臺(tái)下百度定位技術(shù)和地圖技術(shù),實(shí)現(xiàn)對(duì)Android手機(jī)通訊錄信息管理。通過(guò)查詢通訊錄中聯(lián)系人電話、手機(jī)號(hào)碼歸屬地,將通訊錄按照號(hào)碼歸屬地重新分組。借助百度地圖功能,在地圖上顯示全國(guó)城市聯(lián)系人的分布。通過(guò)定位功能,隨時(shí)可以知道自己當(dāng)前所在位置,并顯示出通訊錄中當(dāng)前位置附近有哪些聯(lián)系人。以及通過(guò)地圖信息查看從自己當(dāng)前位置到所要去的聯(lián)系人位置的具體路線信息。

3 方案設(shè)計(jì)

為達(dá)到以上目標(biāo),對(duì)手機(jī)通訊錄管理方案設(shè)計(jì)如下圖所示:

軟件功能共分為五個(gè)模塊,包括:按城市查詢聯(lián)系人,在地圖上顯示全國(guó)各個(gè)城市聯(lián)系人的分布,定位自己當(dāng)前位置,路線提示和消息提示。按城市查詢聯(lián)系人,通過(guò)查詢通訊錄中聯(lián)系人手機(jī)號(hào)碼歸屬地,按照歸屬地城市對(duì)通訊錄聯(lián)系人重新分組。并且使用者可輸入城市關(guān)鍵字查詢?cè)摮鞘械穆?lián)系人有哪些。

地圖位置顯示,基于百度地圖功能[1],在地圖上顯示全國(guó)城市聯(lián)系人的分布。點(diǎn)擊可查看聯(lián)系人在地圖上的具體位置。

定位自己當(dāng)前位置,基于百度地圖定位功能,隨時(shí)隨地可以知道自己當(dāng)前所在位置,并顯示出通訊錄中當(dāng)前位置附近有哪些聯(lián)系人,給出消息提示。

路線提示,提示自己當(dāng)前所在位置,附近的聯(lián)系人。通過(guò)地圖信息查看從自己當(dāng)前位置到所要去的聯(lián)系人位置的具體路線信息。

4 軟件詳細(xì)設(shè)計(jì)

實(shí)現(xiàn)按城市查詢聯(lián)系人功能,首先需要獲取手機(jī)通訊錄信息數(shù)據(jù)。然后對(duì)獲得的數(shù)據(jù)中的電話、手機(jī)號(hào)碼進(jìn)行號(hào)碼歸屬地查詢。再按照歸屬地城市進(jìn)行分類。最后將分類結(jié)果顯示出來(lái)。

用戶可按照城市查詢?cè)摮鞘杏心男┞?lián)系人。打開聯(lián)系人,可查看聯(lián)系人具體信息,并且可編輯聯(lián)系人具體地址保存。流程圖如下圖所示:

地圖位置顯示功能,根據(jù)聯(lián)系人的具體地址信息,打開地圖功能,在地圖上顯示各個(gè)城市聯(lián)系人總數(shù)。如果聯(lián)系人的具體地址在數(shù)據(jù)庫(kù)中存在,則軟件可根據(jù)具體地址信息,在地圖上顯示出其所在的位置。

定位當(dāng)前位置功能,定位用戶當(dāng)前所在的城市和具體位置。通過(guò)對(duì)比當(dāng)前城市和數(shù)據(jù)庫(kù)中的號(hào)碼歸屬地信息,查找出當(dāng)前城市的所有聯(lián)系人并顯示出來(lái)。

消息提示功能,提示自己當(dāng)前所在位置,以及當(dāng)前位置附近通訊錄中有哪些聯(lián)系人,是否需要聯(lián)系。

查看詳細(xì)信息,通過(guò)地圖功能查看自己當(dāng)前位置以及該城市所有聯(lián)系人的位置。并給出路線提示,提示自己當(dāng)前位置到聯(lián)系人位置的路線信息。

5 關(guān)鍵技術(shù)

5.1 電話號(hào)碼歸屬地查詢

將通訊錄中手機(jī)、電話號(hào)碼按照歸屬地分組,關(guān)鍵技術(shù)在于號(hào)碼歸屬地查詢。歸屬地查詢一般可以通過(guò)聯(lián)網(wǎng)查詢和匹配本機(jī)歸屬地?cái)?shù)據(jù)庫(kù)兩種方法。為了避免過(guò)于增加本地?cái)?shù)據(jù)庫(kù)容量而增大安裝包大小,本軟件采用聯(lián)網(wǎng)查詢的方法。

聯(lián)網(wǎng)查詢主要是通過(guò)Webservice來(lái)實(shí)現(xiàn)。Webservice是一個(gè)應(yīng)用組件,可以為其他應(yīng)用程序提供數(shù)據(jù)和服務(wù)。各應(yīng)用程序通過(guò)網(wǎng)絡(luò)協(xié)議和規(guī)定的一些標(biāo)準(zhǔn)數(shù)據(jù)格式(HTTP、XML、SOAP)來(lái)訪問webservice,通過(guò)WebService內(nèi)部執(zhí)行得到所需數(shù)據(jù)結(jié)果。

首先,獲取手機(jī)通訊錄信息。在Android平臺(tái)上手機(jī)聯(lián)系人信息存儲(chǔ)在系統(tǒng)自帶的SQLite數(shù)據(jù)庫(kù)中,要獲得聯(lián)系人電話號(hào)碼就要訪問contacts.db數(shù)據(jù)庫(kù),訪問數(shù)據(jù)庫(kù)前需要設(shè)置應(yīng)用程序讀取聯(lián)系人權(quán)限。

然后,查詢號(hào)碼歸屬地信息。通過(guò)http請(qǐng)求訪問遠(yuǎn)端的“webservice.webxml.com.cn”提供的國(guó)內(nèi)手機(jī)號(hào)碼歸屬地查詢WebService服務(wù),向其發(fā)送封裝了電話號(hào)碼的XML格式數(shù)據(jù)。WebService服務(wù)提供了getMobileCodeInfo 方法,通過(guò)執(zhí)行它可以獲得國(guó)內(nèi)手機(jī)號(hào)碼歸屬地省份、地區(qū)和手機(jī)卡類型信息,并且將查詢結(jié)果以XML形式返回。getMobileCodeInfo方法需要數(shù)據(jù)輸入?yún)?shù),參數(shù)包括:mobileCode ,字符串(手機(jī)號(hào)碼,最少前7位數(shù)字);userID, 字符串(商業(yè)用戶ID) 免費(fèi)用戶為空字符串。通過(guò)該方法可以得到返回?cái)?shù)據(jù),包括手機(jī)號(hào)碼,省份, 城市, 手機(jī)卡類型等信息。

5.2 地圖顯示

Android平臺(tái)上地圖開發(fā),地圖SDK可選擇google地圖、高德地圖、百度地圖等。Google Map是Google公司提供的電子地圖服務(wù),采用的是gps坐標(biāo)系,具有穩(wěn)定,衛(wèi)星地圖精細(xì)的優(yōu)勢(shì),但手機(jī)必須要有Google Service Framework支持。高德地圖,采用火星坐標(biāo)系(gcj),支持全球定位,但衛(wèi)星地圖不夠精細(xì)。百度地圖采用百度坐標(biāo)系,相對(duì)來(lái)說(shuō)穩(wěn)定性更好,支持全球定位,功能迭代較快,地圖數(shù)據(jù)加載快。所以本方案中選擇百度地圖SDK作為地圖開發(fā)SDK。百度地圖Android SDK是一套基于Android2.1及以上版本設(shè)備的應(yīng)用接口,可使用該套SDK開發(fā)適用于Android系統(tǒng)移動(dòng)設(shè)備的地圖應(yīng)用。[2]通過(guò)調(diào)用地圖SDK接口,訪問百度地圖服務(wù)和數(shù)據(jù),構(gòu)建功能豐富、交互性強(qiáng)的地圖類應(yīng)用程序。

百度地圖SDK按功能可分為:地圖功能、檢索功能、LBS云檢索、計(jì)算工具和周邊雷達(dá)五個(gè)部分。地圖功能提供了地圖的展示和縮放、平移、旋轉(zhuǎn)、改變視角等地圖操作。本軟件通過(guò)百度地圖提供的API,實(shí)現(xiàn)在地圖上顯示各個(gè)城市的聯(lián)系人分布,點(diǎn)擊可查看聯(lián)系人在地圖上的詳細(xì)位置。百度地圖應(yīng)用程序的開發(fā)需要設(shè)置布局文件權(quán)限、添加jar包以及顯示百度地圖的控件幾個(gè)步驟實(shí)現(xiàn)[2]。具體介紹如下:

在使用百度地圖之前,必須先申請(qǐng)一個(gè)百度地圖的API key。然后下載百度地圖API開發(fā)包,并在工程中引入。在Eclipse工程中,將開發(fā)包里的baidumapapi_vX_X_X.jar拷貝到libs根目錄下,將libBaiduMapSDK_vX_X_X.so拷貝到libs\armeabi目錄下。在工程屬性->Java Build Path->Libraries中選擇“Add External JARs”,選定baidumapapi_vX_X_X.jar,確定后返回。 通過(guò)以上兩步操作后,完成Android應(yīng)用程序工程的配置。還需要在應(yīng)用程序的AndroidManifest文件中添加開發(fā)密鑰、所需權(quán)限等信息。至此,就可以利用SDK提供的接口,獲取地圖數(shù)據(jù)了。

百度地圖一些重要的類和對(duì)象見下表:

MapView繼承于Android SDK的ViewGroup類,作為顯示地圖UI控件,負(fù)責(zé)從百度地圖服務(wù)端獲取地圖數(shù)據(jù)。BaiduMap,通過(guò)Mapview的getMap()方法可以得到百度地圖最核心的組件BaiduMap[3] [4],它是一個(gè)地圖控制器,負(fù)責(zé)對(duì)地圖、覆蓋物以及圖層進(jìn)行渲染,定義百度地圖相關(guān)操作,并對(duì)用戶交互事件進(jìn)行監(jiān)聽。這些監(jiān)聽接口包括了:地圖單擊事件監(jiān)聽接口,雙擊事件監(jiān)聽接口,地圖繪制回調(diào)接口,地圖加載完成回調(diào)接口,地圖長(zhǎng)按事件監(jiān)聽接口,地圖狀態(tài)改變相關(guān)接口等,通過(guò)實(shí)現(xiàn)這些接口就可以實(shí)現(xiàn)應(yīng)用程序所需的地圖功能。

5.3 位置定位

Android平臺(tái)上定位的實(shí)現(xiàn)方案可以有多種選擇,包括GPS定位,基站定位,WIFI熱點(diǎn)定位。利用智能手機(jī)上的GPS或者移動(dòng)網(wǎng)絡(luò)可以輕松的得到當(dāng)前所處的位置信息。

本方案采用基于百度地圖的定位服務(wù)。百度地圖Android定位SDK支持Android設(shè)備應(yīng)用程序接口。通過(guò)百度地圖API可以構(gòu)建強(qiáng)交互性應(yīng)用,同時(shí)還可以實(shí)現(xiàn)定位、本地搜索,路線規(guī)劃等數(shù)據(jù)服務(wù)[5]。實(shí)現(xiàn)定位功能,通過(guò)設(shè)備當(dāng)前GPS信息、網(wǎng)絡(luò)定位(WIFI、基站)混合定位模式,返回當(dāng)前所處的位置信息。通過(guò)反地理編碼功能,解析當(dāng)前所處的位置坐標(biāo),獲得詳細(xì)地址描述信息。它與百度地圖配合使用,可以在地圖上展示實(shí)時(shí)位置信息。其工作的詳細(xì)流程如下圖:

當(dāng)應(yīng)用程序向定位SDK發(fā)起定位請(qǐng)求時(shí),定位SDK會(huì)根據(jù)應(yīng)用的定位因素(GPS、基站、Wi-Fi信號(hào))的實(shí)際情況(如是否開啟GPS、是否連接網(wǎng)絡(luò)、是否有信號(hào)等)來(lái)生成相應(yīng)定位依據(jù)進(jìn)行定位[2]。然后定位SDK會(huì)根據(jù)生成的定位依據(jù)向定位服務(wù)器發(fā)送網(wǎng)絡(luò)請(qǐng)求。定位服務(wù)器會(huì)根據(jù)請(qǐng)求的定位依據(jù)推算出對(duì)應(yīng)的坐標(biāo)位置,生成定位結(jié)果返回給定位SDK。

定位服務(wù)客戶端一些重要的類和方法如下表所示:

LocationClient類是定位服務(wù)客戶端的一個(gè)重要的類。LocationClient類必須在主線程中聲明,它需要Content類型的參數(shù)。Content需要全進(jìn)程有效的content,推薦用getApplicationContent獲取全進(jìn)程有效的Content。LocationClient需要注冊(cè)一個(gè)BDLocationListener監(jiān)聽接口的具體實(shí)現(xiàn)類,在這個(gè)實(shí)現(xiàn)類里,可以自定義對(duì)返回結(jié)果的處理。在開啟定位之前,需要對(duì)定位客戶端設(shè)置定位參數(shù),定位參數(shù)包括:定位模式(高精度定位模式,低功耗定位模式和僅用設(shè)備定位模式),返回坐標(biāo)類型,是否打開GPS等。LocationOption對(duì)相關(guān)的定位參數(shù)進(jìn)行了封裝,利用它提供的set方法進(jìn)行參數(shù)設(shè)置。分別使用public void start()和public void stop() 來(lái)打開或關(guān)閉LocationClient ,調(diào)用public intrequestLocation( ) 方法來(lái)發(fā)起定位。發(fā)起定位后,定位客戶端異步獲取當(dāng)前位置。定位結(jié)果在BDLocationListener的onReceiveLocation方法的參數(shù)中返回。

6 結(jié)束語(yǔ)

本文提出了一種對(duì)Android智能手機(jī)通訊錄管理方案,并詳細(xì)介紹了軟件實(shí)現(xiàn)的過(guò)程和關(guān)鍵技術(shù)。方案將Android智能手機(jī)中的聯(lián)系人信息按照號(hào)碼歸屬地分類,在地圖上顯示出各個(gè)城市聯(lián)系人的具體位置。再通過(guò)定位功能,定位自己當(dāng)前位置,并給出當(dāng)前位置附近的聯(lián)系人有哪些,以及從自己當(dāng)前位置到聯(lián)系人位置的路線。實(shí)現(xiàn)該方案最主要的是基于百度地圖和百度定位SDK進(jìn)行二次開發(fā)。百度地圖SDK提供了多種方法,功能豐富,具有較大的可擴(kuò)展性。借助百度地圖成熟的地圖服務(wù)框架快速搭建自己的地圖應(yīng)用,可以大大降低開發(fā)成本、開發(fā)時(shí)間以及對(duì)本地服務(wù)器的硬件要求,將更多的注意力聚焦于自身的業(yè)務(wù)系統(tǒng)。在軟件即服務(wù)的軟件應(yīng)用模式下,百度地圖SDK以一種更加開放的姿態(tài)走向個(gè)人和企業(yè),為移動(dòng)應(yīng)用的發(fā)展開拓了新的方向。

參考文獻(xiàn):

[1] 杜傳明. 百度地圖API在小型地理信息系統(tǒng)中的應(yīng)用[J]. 測(cè)繪與空間地理信息, 2011, 34(2): 152-153.

[2] 百度. 百度地圖API開發(fā)指南

[EB/OL]. [2014-06]. http://lbsyun.baidu.com/index.php?title=androidsdk/guide/basicmap.

[3] 朱根榮. 百度地圖API應(yīng)用數(shù)例[J].電腦編程技巧與維護(hù), 2013(23).

[4] 程志平. 如何構(gòu)建一個(gè)基礎(chǔ)的百度地圖頁(yè)面[J]. 數(shù)字化用戶, 2013(28).

[5] 施連敏, 蓋之華. 基于Android的百度地圖應(yīng)用的搭建[J]. 技術(shù)開發(fā), 2014(12).

猜你喜歡
Android系統(tǒng)
掌游西塘APP設(shè)計(jì)與實(shí)現(xiàn)
基于污點(diǎn)傳播動(dòng)態(tài)分析的Android安全系統(tǒng)研究
Android系統(tǒng)上的移動(dòng)互聯(lián)網(wǎng)集成平臺(tái)開發(fā)機(jī)制
Android系統(tǒng)核心管理工具設(shè)計(jì)與實(shí)現(xiàn)
Android下的機(jī)械式電表數(shù)字識(shí)別技術(shù)研究
基于Android系統(tǒng)的掌上班級(jí)課表與學(xué)生考勤管理系統(tǒng)
基于GPS和iBeacon的智能校園信息發(fā)布平臺(tái)設(shè)計(jì)與實(shí)現(xiàn)
基于增強(qiáng)現(xiàn)實(shí)技術(shù)的導(dǎo)航系統(tǒng)研究
基于Android的溫室智能視頻監(jiān)控系統(tǒng)研究
面向移動(dòng)終端的語(yǔ)音簽到系統(tǒng)
黑龙江省| 彭山县| 怀仁县| 黄石市| 个旧市| 喀喇| 山阳县| 宜州市| 延川县| 桦川县| 尖扎县| 呼玛县| 濉溪县| 多伦县| 鞍山市| 吴桥县| 上饶市| 崇义县| 根河市| 光泽县| 新沂市| 滦南县| 高阳县| 思茅市| 华安县| 综艺| 舟曲县| 鲁山县| 定日县| 阿尔山市| 布尔津县| 息烽县| 仙游县| 金川县| 开远市| 尖扎县| 武安市| 扶余县| 芷江| 团风县| 句容市|