淺談Android集成百度鷹眼服務(wù)

鷹眼軌跡是百度開放平臺(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ì)大家有所幫助,謝謝!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容