判斷哪一種位置讀取方式比當前的位置修復更加的準確

2021-06-22 23:19:28 字數 1557 閱讀 5636

由於定位的不確定性,每次位置的更新不見得是最精確的,所以我們需要和上乙個位置做比較,來判斷是否使用這次的位置。

下面是api的示例**:

private static final int two_minutes = 1000 * 60 * 2;

/** 判斷哪一種位置讀取方式比當前的位置修復更加的準確

* @param location 新位置

* @param currentbestlocation 當前的位置,此位置需要和新位置進行比較

*/protected boolean isbetterlocation(location location, location currentbestlocation)

//檢查最新的位置是比較新還是比較舊

long timedelta = location.gettime() - currentbestlocation.gettime();

boolean issignificantlynewer = timedelta > two_minutes;

boolean issignificantlyolder = timedelta < -two_minutes;

boolean isnewer = timedelta > 0;

//如果當前的位置資訊**於兩分鐘前,使用最新位置,

// 因為使用者可能移動了

if (issignificantlynewer) else if (issignificantlyolder)

//檢查最新的位置資訊是更加的準確還是不準確

int accuracydelta = (int) (location.getaccuracy() - currentbestlocation.getaccuracy());

boolean islessaccurate = accuracydelta > 0;

boolean ismoreaccurate = accuracydelta < 0;

boolean issignificantlylessaccurate = accuracydelta > 200;

//檢查舊的位置和新的位置是否來自同乙個provider

boolean isfromsameprovider = issameprovider(location.getprovider(),

currentbestlocation.getprovider());

//結合及時性和精確度,決定位置資訊的質量

if (ismoreaccurate) else if (isnewer && !islessaccurate) else if (isnewer && !issignificantlylessaccurate && isfromsameprovider)

return false;}

/*** 檢查兩個提供者是否是同乙個*/

private boolean issameprovider(string provider1, string provider2)

return provider1.equals(provider2);

測測你是哪一種惡魔的化身

測試結果 a 級魔鬼開膛手傑克 你心狠手辣,不高興絕對不會藏在心理,有不爽一定要發洩出來,你的座右銘是 有仇必報 雖然有時候也會耍點小陰險,但大多時候的你總是可以讓人感覺到你火辣辣的脾氣。b 級魔鬼撒旦 沒錯!你就是貨真價實的壞胚子!或許你也曾經相信過人性本善,但是看多了人性醜陋的那一面後,你除了轉...

職場高階的10種姿勢,你是哪一種呢?

除了埋頭苦幹,你的職場晉公升之路還剩下哪些優勢?這個世界充滿假象,唯有痛苦從不說謊!職場如戰場,本就是優勝劣汰適者生存,只會埋頭苦幹的人,不過算是機械式運作的流水線工人,做得再多,再努力認真,也不過是生產力較高的的優秀的機械式員工。簡言之,誰敢指望一頭只會低頭幹活,不懂抬頭看路的老黃牛,有能力帶領團...

創新者的五種人格型別 你是哪一種?

每當我試圖想象創新是什麼樣的時候,腦中就會浮現出同樣的影象 愛因斯坦吐舌頭的那張 愛迪生與他的電燈泡,史蒂夫 賈伯斯穿著黑色高領套頭衫站在台上介紹帶 i 字頭的最新產品。可以肯定這並非獨創也有些誇張,而且也並不是那麼準確。因為創新並不僅僅只是在黑板前或酒巾上那種帶著文學色彩的突然頓悟,而在於創意產生...