0

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

4

2 回答 2

0

是的,对于 api >= 8,您可以通过调用来了解应用程序是否已requestLocationUpdates调用

requestLocationUpdates(LocationManager.PASSIVE_PROVIDER, minTime, minDist, listener);  

官方文件

公共静态最终字符串 PASSIVE_PROVIDER

在 API 级别 8 中添加

一种特殊的位置提供程序,用于在不实际启动位置修复的情况下接收位置。

当其他应用程序或服务请求位置更新时,此提供程序可用于被动接收位置更新,而无需自己实际请求位置。该提供者将返回由其他提供者生成的位置。您可以查询 getProvider() 方法来确定位置更新的来源。需要权限 ACCESS_FINE_LOCATION,但如果未启用 GPS,此提供程序可能只会返回粗略的修复。

常数值:“被动”

在某些应用程序请求修复之前,不会调用 onLocationChanged。

于 2013-05-09T19:41:53.623 回答
0

除了通过PASSIVE_PROVIDER.

于 2013-05-14T13:40:03.417 回答