我正在使用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/