簡體   English   中英

使用融合位置提供程序獲取啟用/禁用位置服務的信息

[英]Get information of Location Services enabled/disabled using Fused Location Provider

我正在開發一款使用Google地圖並跟蹤用戶位置的應用。 我想改變“你在這里!”的知名度。 當用戶手動關閉位置服務或服務進入無法訪問的狀態時的標記。 此方法可以返回是否啟用位置服務的信息:

private boolean isLocationServicesEnabled() {
    LocationManager lm = (LocationManager) getSystemService(LOCATION_SERVICE);
    if (lm.isProviderEnabled(LocationManager.GPS_PROVIDER) || lm.isProviderEnabled(LocationManager.NETWORK_PROVIDER)) {
        return true;
    }
    return false;
}

但是,我不想一次檢測位置服務的狀態。 每當用戶打開或關閉位置服務時,我都應檢測到它並更改標記的可見性。 簡而言之,這個草率的偽代碼解釋了我想聽的內容:

while application runs
   if location services turn off
      change marker visibility to false
   else
      change marker visibility to true 

沒有android.location.LocationListener,我沒有找到實現此任務的方法,想要使用Fused Location Provider實現它。 你有什么主意嗎? 如果你想看到,我使用的核心結構如下:

http://www.androidhive.info/2015/02/android-location-api-using-google-play-services/ (查看“完整代碼”的標題)

以正確的方式執行此操作涉及大量代碼。 你必須要使用的位置SettingsApi類。

與位置設置啟用程序API交互的主要入口點。

此API使應用程序可以輕松確保為應用程序的位置需求正確配置設備的系統設置。

幸運的是,谷歌在github上提供了一個完整的樣本

如何實現gps監聽器?

mLocationManager.addGpsStatusListener(new GpsStatus.Listener(){

    @Override
    public void onGpsStatusChanged(int event) {
        if(event==GpsStatus.GPS_EVENT_STARTED){
            Log.d(TAG,"Gps Started");
        }else if(event==GpsStatus.GPS_EVENT_STOPPED){
            Log.d(TAG,"Gps Stopped");
        }
    }
});

修改上述代碼以更改標記的可見性。 希望這有效。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM