2014-05-02 32 views
1

您是否需要連接的LocationClient才能檢測到用戶左側是Geofence? 在我當前的代碼中,我連接了我的LocationClient,建立了地理圍欄,然後解開了LocationClient。但是,它有時會檢測到我已經離開了它,但是在Geofence之外的更遠的位置。LocationClient連接和Geofence

回答

2

有關Google Play GeoFencing API的重要說明。我發現GeoFencing從不智能地從GPS硬件中檢索位置。 GeoFence API將觀察操作系統中最準確的位置,或者如果沒有最近的位置讀數可用,它將導致從Wifi/Cellular計算位置。 (這很吸引人,因爲蜂窩是非常不準確的,而且wifi通常不可用)

因此,爲了獲得Geofencing API的所有響應或準確結果,您必須設置Geofences,然後輪詢GPS硬件,而不是甚至對收到的結果做任何事情,以便在表面之下爲操作系統提供有價值的數據。

這可能是您的結果如此不準確的原因。直到操作系統確定你在柵欄外100%時,地理柵欄退出纔會觸發 - 因此,如果位置讀數具有500米的精度(在使用單元格地理位置時不太可能),並且柵欄的半徑爲50米, d必須距離柵欄點至少550米才能產生退出事件。

TLDR;每隔一段時間輪詢GPS硬件,而不對結果做任何事情,您將開始獲得更準確的地理圍欄。

+0

你碰巧知道你是否可以在應用程序在後臺使用計時器來輪詢GPS? – Smoore

+0

是的,我的應用程序執行此操作,在觸發柵欄時發出通知。 Android上的轉向應用程序也可以做同樣的事情。 – stealthwang

+0

關於如何防止你的應用在後臺死亡的想法嗎?我有一個廣播接收器處理我的地理圍欄進入/退出,但它有時會被操作系統殺死,就像在一夜之間說的那樣。 – Smoore