android.location.LocationManager.PASSIVE_PROVIDER的含义是什么?

10
我理解 GPS_PROVIDER 意味着定位来源于GPS信号,NETWORK_PROVIDER 的意思是通过基站和无线接入点确定位置,但是我不明白PASSIVE_PROVIDER 的含义,尽管在API中有定义:

一种特殊的位置提供程序, 可以接收位置更新而不实际发起位置修复。 当其他应用或服务请求位置更新时,可以使用此提供程序来被动地接收这些更新,而不需要自己请求位置。此提供者将返回由其他提供者生成的位置信息。您可以查询getProvider()方法以确定位置更新的原始来源。 需要权限android.permission.ACCESS_FINE_LOCATION, 尽管如果未启用GPS,则此提供程序可能只返回粗略的修复程序。

为什么要使用它而不是其他提供程序?是为了节省电池寿命吗?如果某个应用程序显式要求从真实的提供商那里获取数据,那么仅通过被动提供程序获得的信息是否有用?

2个回答

20

这个提供程序对于需要使用用户位置信息但不想浪费电池寿命的服务非常有用,正如您所指出的。

例如,Google Latitude会将您当前的位置发送到一个Web服务,以让您的朋友知道您在哪里。如果该服务每5分钟请求一次GPS定位,设备电池将很快耗尽。如果该服务请求被动位置提供程序,则每次启动Google地图并获取定位或其他应用程序启动位置提供程序更新时都会发送位置,并且该服务可以在不额外消耗位置更新电量的情况下处理位置数据。

如果您需要在确切的时刻获得正确的位置数据,则使用此提供程序将无法帮助您。对于大多数不在后台服务中运行的事物,此位置提供程序是无用的,因为它只会在其他应用程序触发用户位置更新时发送更新。


很有见地!所以,总结一下,如果有人需要至少一个最近的位置,他们不应该使用passive_provider - sud007

4

补充@Janusz的话,如果你收到了别人提供的修复程序,并且想知道这个修复程序是来自哪个提供商(NETWORK还是GPS),你可以调用getProvider()来查找。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接