找到优秀的requestLocationUpdates

时间:2013-05-09 16:23:37

标签: android android-location

我想知道是否有办法判断是否有人(不一定是我的应用程序)调用了requestLocationUpdates。我正在编写一个监控位置的服务,但我不想干扰可能正在监控位置的其他应用程序(例如Waze,Endomondo)。 我没有在LocationManager对象中看到任何API,它可以告诉我是否有未完成的位置更新请求。 有什么想法吗?

2 个答案:

答案 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之外,您无法确定其他应用程序正在对位置更新做些什么。