我想知道是否有办法判断是否有人(不一定是我的应用程序)调用了requestLocationUpdates。我正在编写一个监控位置的服务,但我不想干扰可能正在监控位置的其他应用程序(例如Waze,Endomondo)。 我没有在LocationManager对象中看到任何API,它可以告诉我是否有未完成的位置更新请求。 有什么想法吗?
答案 0 :(得分:0)
是的,对于api> = 8,您可以通过调用
查看应用是否已调用requestLocationUpdates
requestLocationUpdates(LocationManager.PASSIVE_PROVIDER, minTime, minDist, listener);
官方文件
public static final String PASSIVE_PROVIDER
在API级别8中添加
在某些应用程序请求修复之前,不会调用一个特殊的位置提供程序,用于实际接收位置 启动位置修复。
此提供程序可用于在被动时接收位置更新 其他应用程序或服务实际上请求它们 自己申请地点。此提供商将返回位置 由其他提供商生成。您可以查询getProvider()方法 确定位置更新的来源。需要 权限ACCESS_FINE_LOCATION,但是如果未启用GPS 此提供程序可能只返回粗略修复。
常数值:“被动”
onLocationChanged。
答案 1 :(得分:0)
除了间接通过PASSIVE_PROVIDER
之外,您无法确定其他应用程序正在对位置更新做些什么。