android.location.LocationManager.PASSIVE_PROVIDER是什么意思?

时间:2011-04-13 20:31:26

标签: android location locationmanager

我理解GPS_PROVIDER(位置来自GPS信号)和NETWORK_PROVIDER(位置是从手机信号塔和无线接入点确定)的含义,但我不明白{PASSIVE_PROVIDER的含义3}},尽管API中有定义:

  

特殊的位置提供商   没有实际接收位置   启动位置修复。这个   提供者可以被动地使用   其他时接收位置更新   应用程序或服务请求它们   没有实际请求   地点自己。这个提供者会   返回由其他人生成的位置   供应商。你可以查询   getProvider()方法来确定   位置更新的起源。   需要许可   android.permission.ACCESS_FINE_LOCATION,   虽然如果没有启用GPS   此提供程序可能只返回粗略   修复。

为什么要使用它而不是其他提供者?为了节省电池寿命?如果某个其他应用程序显式请求来自真实提供程序的数据,被动提供程序是否仅返回有用信息,或者从此请求位置始终是安全的?

2 个答案:

答案 0 :(得分:18)

此提供程序对于与用户位置一起使用但不希望浪费电池寿命的服务非常有用,如您所指出的那样。

例如谷歌纵横将您当前的位置发送到网络服务,让您的朋友知道您的位置。如果此服务每5分钟请求一次GPS修复,则设备电池将非常快地清空。如果服务请求被动位置提供商,则每次启动Google地图时都会发送一个位置,并且修复获取或某些其他应用启动位置提供商更新,并且该服务可以对位置数据执行操作,而无需在位置更新上花费额外的电力。

如果您在准确的时刻需要正确的位置数据,使用此提供商将无济于事。对于大多数未在后台服务中运行的内容,此位置提供程序无用,因为只有在其他应用程序触发用户位置更新时才会发送更新。

答案 1 :(得分:4)

要添加到@Janusz,当您收到其他人的提供商提供的修补程序,并且您希望从(NETWORK或GPS)的修补程序中知道该提供程序时,您可以调用getProvider()来查找此内容。