我正在使用Google Maps并跟踪用户位置的应用程序。我想更改“您在这里!”的显示范围。当用户手动关闭位置服务或服务进入无法访问状态时,该标记。此方法可以返回是否启用了定位服务的信息:

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使应用程序可以轻松确保设备的系统
  设置已针对应用的位置需求进行了正确配置。


幸运的是,Google在github上提供了完整的示例

关于android - 获取使用融合位置提供程序启用/禁用的位置服务的信息,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29050372/

10-11 22:40
查看更多