10

我理解GPS_PROVIDER(位置来自 GPS 信号)和NETWORK_PROVIDER(位置由蜂窝塔和无线接入点确定)的含义,但我不明白PASSIVE_PROVIDER的含义,尽管 API 中有定义:

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

为什么要使用它而不是其他提供商之一?为了节省电池寿命?被动提供者是否仅在其他应用程序明确向真实提供者请求数据时才返回有用信息,或者从这里请求位置总是安全的?

4

2 回答 2

20

该提供程序对于使用用户位置但不想浪费电池寿命的服务很有用,正如您所指出的那样。

例如,谷歌纵横将您当前的位置发送到网络服务,让您的朋友知道您在哪里。如果该服务每 5 分钟请求一次 GPS 定位,则设备电池将很快耗尽。如果服务请求被动位置提供者,则每次启动 Google 地图并获得修复或某些其他应用程序启动位置提供者更新时都会发送位置,并且该服务可以对位置数据采取行动,而无需在位置更新上花费额外的力量。

如果您在某个特定时刻需要正确的位置数据,则使用此提供程序将无济于事。对于大多数不在后台服务中运行的东西,这个位置提供程序是无用的,因为它只会在其他应用程序触发用户位置更新时发送更新。

于 2011-04-13T20:38:47.390 回答
4

要添加到@Janusz,当您收到由于其他人的提供者提供的修复并且您希望知道来自哪个提供者的修复(网络或 GPS)时,您可以调用 getProvider() 来找到它。

于 2011-04-13T20:42:09.880 回答