鷹眼軌跡是百度開放平臺(tái)最新推出的一套高性能軌跡存儲(chǔ)和查詢服務(wù)。上個(gè)月在二手房媒體平臺(tái)項(xiàng)目里集成了這一服務(wù),所以今天結(jié)合百度開發(fā)文檔來(lái)跟大家分享一下具體的流程。
首先來(lái)看一下百度鷹眼服務(wù)的簡(jiǎn)介
下面是開發(fā)步驟:
一、申請(qǐng)密鑰
根據(jù)應(yīng)用的包名和安全碼SHA1值可以申請(qǐng)到一個(gè)ak值,其中SHA1氛圍開發(fā)版和發(fā)布版,分別對(duì)應(yīng)開發(fā)版和發(fā)布版的ak,詳細(xì)步驟參照http://lbsyun.baidu.com/index.php?title=android-yingyan/guide/key
注:1. 每個(gè)Key僅且唯一對(duì)于1個(gè)應(yīng)用驗(yàn)證有效,即對(duì)該Key配置環(huán)節(jié)中使用的包名匹配的應(yīng)用有效。因此,多個(gè)應(yīng)用【包括多個(gè)包名】需申請(qǐng)多個(gè)Key,或者對(duì)1個(gè)Key進(jìn)行多次配置;
2.若你需要在同一個(gè)工程中同時(shí)使用百度地圖、定位、導(dǎo)航SDK、鷹眼SDK可以共用同一個(gè)key;
二、在百度開發(fā)者平臺(tái)創(chuàng)建鷹眼軌跡服務(wù)
進(jìn)入軌跡管理臺(tái)創(chuàng)建鷹眼服務(wù),獲得serviceId
創(chuàng)建成功后會(huì)得到一個(gè)serviceid。
三、配置工程
導(dǎo)入jar包和庫(kù)文件并在項(xiàng)目的清單文件里進(jìn)行配置ak和添加鷹眼服務(wù)組件并添加相應(yīng)的權(quán)限
四、開啟軌跡追蹤
1.初始化Trace和LBSTraceClient
初始化LBSTraceClient時(shí)最好使用getApplicationContext,以保證服務(wù)的全局使用
定位周期:多久定位一次,在定位周期大于15s時(shí),SDK會(huì)將定位周期設(shè)置為5的倍數(shù)(如設(shè)置采集周期為18s,SDK會(huì)調(diào)整為15s;設(shè)置為33s,SDK會(huì)調(diào)整為30s)
回傳周期:鷹眼為節(jié)省電量和流量,并不是定位一次就回傳一次數(shù)據(jù),而是隔段時(shí)間將一批定位數(shù)據(jù)打包壓縮回傳。(回傳周期最大不要超過(guò)定位周期的10倍,例如,定位周期為10s,則回傳周期最好不要大于60s)
鷹眼SDK支持開發(fā)者動(dòng)態(tài)設(shè)置定位周期和回傳周期(2s到5分鐘),可以在開啟服務(wù)前設(shè)置,也可以在服務(wù)運(yùn)行過(guò)程中動(dòng)態(tài)設(shè)置,隨時(shí)生效。開發(fā)者可自行判斷終端的運(yùn)動(dòng)速度和狀態(tài),動(dòng)態(tài)調(diào)整定位周期。
2.開啟服務(wù)
client.startTrace(trace);
或者
client.startTrace(trace,onStartTraceListener);?????? //startTrace()對(duì)應(yīng)的回調(diào)接口為onStartTraceListener中的onTraceCallback()接口
3.結(jié)束軌跡追蹤
client.stopTrace(trace, onStopTraceListener);? ? //stopTrace()對(duì)應(yīng)的回調(diào)接口為onStopTraceListener中的onTraceCallback()接口
***復(fù)雜網(wǎng)絡(luò)狀態(tài)下,SDK的連接與軌跡回傳策略***
在網(wǎng)絡(luò)狀態(tài)持續(xù)良好的情況下,SDK將按照指定頻率回傳軌跡。如果在開啟軌跡追蹤時(shí)、追蹤過(guò)程中、或結(jié)束軌跡追蹤時(shí)遇到網(wǎng)絡(luò)不穩(wěn)定或斷網(wǎng)的情況,SDK也有相應(yīng)處理策略:
①開啟追蹤追蹤,調(diào)用startTrace()時(shí)
只要調(diào)用startTrace(),不論網(wǎng)絡(luò)狀態(tài)和startTrace()回調(diào)的狀態(tài)碼是什么,SDK都將立即開始采集并緩存軌跡,若此時(shí)網(wǎng)絡(luò)連接正常,將實(shí)時(shí)回傳軌跡;若連上不可上網(wǎng)的Wi-Fi或網(wǎng)絡(luò)斷開,則將緩存軌跡在手機(jī)數(shù)據(jù)庫(kù)中,并自動(dòng)監(jiān)聽網(wǎng)絡(luò),待聯(lián)網(wǎng)時(shí)自動(dòng)回傳緩存數(shù)據(jù)(處于緩存狀態(tài)時(shí),因?yàn)檐壽E在設(shè)備端,實(shí)時(shí)位置、歷史軌跡和里程都不能獲取到最新的軌跡信息)。
②軌跡追蹤過(guò)程中
若追蹤過(guò)程中,出現(xiàn)網(wǎng)絡(luò)中斷、連上不可上網(wǎng)的Wi-Fi,或網(wǎng)絡(luò)頻繁切換時(shí),SDK都將自動(dòng)開啟緩存模式,將采集的軌跡數(shù)據(jù)保存到數(shù)據(jù)庫(kù)中,并自動(dòng)監(jiān)聽網(wǎng)絡(luò),待聯(lián)網(wǎng)時(shí)自動(dòng)回傳緩存數(shù)據(jù)。
③停止軌跡追蹤,調(diào)用stopTrace()時(shí)
只要調(diào)用stopTrace(),無(wú)論網(wǎng)絡(luò)狀態(tài)和返回值如何,SDK都將立即停止軌跡采集。
若此時(shí)網(wǎng)絡(luò)連接正常,SDK將加快上傳已緩存的軌跡,上傳成功后在回調(diào)用返回停止服務(wù)成功;
若此時(shí)已斷網(wǎng)或回傳過(guò)程中斷網(wǎng),將立即停止回傳,緩存數(shù)據(jù)存儲(chǔ)至手機(jī)數(shù)據(jù)庫(kù)中,返回停止服務(wù)成功,再次startTrace時(shí)才會(huì)繼續(xù)回傳緩存數(shù)據(jù)。
五、查詢軌跡點(diǎn)的記錄
所有軌跡點(diǎn)均上傳到了百度的服務(wù)后臺(tái),所以查詢時(shí)根據(jù)百度提供的接口來(lái)查詢即可。
接口總覽---鷹眼Web API v2.0
http://lbsyun.baidu.com/index.php?title=yingyan/api/all
1.動(dòng)態(tài)實(shí)時(shí)更新軌跡
api
實(shí)例截圖
2.查詢歷史軌跡
api
實(shí)例截圖
六、電量和流量的消耗
百度提供的數(shù)據(jù)
七、補(bǔ)充說(shuō)明
此外我們可以根據(jù)實(shí)際業(yè)務(wù)需求來(lái)定制軌跡點(diǎn)的自定義屬性來(lái)上傳數(shù)據(jù)
如汽車的油量、發(fā)動(dòng)機(jī)轉(zhuǎn)速等,用以記錄行程中的實(shí)時(shí)狀態(tài)信息,或者每次上傳位置時(shí)同時(shí)記錄手機(jī)的剩余電量等。
開發(fā)者須重寫OnTrackListener監(jiān)聽器中的onTrackAttrCallback()接口,并按照設(shè)置的定位周期更新onTrackAttrCallback()的返回值。SDK每采集一次軌跡,便會(huì)自動(dòng)回調(diào)onTrackAttrCallback()接口,獲取屬性值并寫入當(dāng)前軌跡點(diǎn)的屬性字段中。
onTrackAttrCallback()的返回值是Map類型,每個(gè)對(duì)象都是一個(gè)對(duì),其中key為entity的自定義字段名稱,value為值。
示例:
若開發(fā)者已創(chuàng)建了一個(gè)名為oil的用來(lái)記錄車輛當(dāng)前剩余油量的entity屬性字段,此時(shí)可重寫
注:SDK根據(jù)位置采集周期回調(diào)該接口,獲取軌跡屬性數(shù)據(jù)。
查詢時(shí),直接通過(guò)queryEntityList方法獲取到entity即可拿到。
好了,以上就是所有內(nèi)容,希望對(duì)大家有所幫助,謝謝!