2013-05-31 39 views
24

您可以確定是否有任何提供商可以使用LocationManager,但可以使用google play服務位置api嗎?所有API調用(connect(),requestLocationUpdates())都會成功,但您永遠不會獲得onLocationChanged()。安卓支票位置服務已啓用播放服務位置api

似乎很難使用LocationManager和LocationClient。

我想我需要的是一些方法來知道onLocationChanged(0將永遠被調用。

回答

26

我梳理了文檔,也沒有發現任何方式使用LocationClient來檢測,如果位置服務已啓用onConnected,onDisconnected和onConnectionFailed似乎並未鏈接到是否啓用位置服務

我目前正在使用LocationClient執行位置請求,但使用舊的locationManager.isProviderEnabled(String provider)方法來檢測位置服務服務已啓用,這對我來說是最合適的,因爲即使LocationClient確實提供了一種方式,也沒有d GPS和網絡之間的消失,我真的很想要求用戶啓用GPS。

if (!manager.isProviderEnabled(LocationManager.GPS_PROVIDER)) { 
    //GPS Provider disabled 
    return false; 
} 
+2

謝謝 - 也許有人從谷歌會看到這個並修復它 – user1248322

+0

我覺得這很奇怪! – Bear

+5

'if(lm.isProviderEnabled(LocationManager.GPS_PROVIDER)|| lm.isProviderEnabled(LocationManager.NETWORK_PROVIDER)){}'我認爲是最完整的方法。 Doc說: – Diolor

12

現在有檢測位置是否有更新可用,因爲谷歌播放服務7.3.0的可靠方式:

實現並註冊一個LocationCallback並覆蓋onLocationAvailability()或致電LocationServices.FusedLocationApi.getLocationAvailability()取回可用狀態。如果它是錯誤的,那麼你知道位置更新不會被傳遞,除非設備配置中有所改變。

這種方法實際上非常聰明:例如,如果WiFi被禁用或設備處於飛行模式,即使網絡位置提供商能夠確定沒有位置更新將在僅WiFi設備上傳送始終啓用。

+0

返回位置數據的可用性。當isLocationAvailable()返回true時,getLastLocation(GoogleApiClient)返回的位置將在活動LocationRequests指定的提示內合理更新。 據我瞭解,顯示是否有一些位置數據當前可用,而不是位置服務是否啓用。 – lujop

4

Google Play Services 7.0 introduced a Settins Api您可以在其中詢問您需要的位置設置,然後查詢是否啓用或要求用戶啓用它們。