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

问题描述

| 我了解GPS_PROVIDER(位置来自GPS信号)和NETWORK_PROVIDER(位置由基站和无线接入点确定)的含义,但是我不理解PASSIVE_PROVIDER的含义,尽管API中有定义:   一个特殊的位置提供者   没有实际接收位置   启动位置修复。这个   提供者可以用来被动   当其他人收到位置更新时   应用程序或服务请求它们   而不实际要求   自己定位。该提供者将   返回其他人生成的位置   提供者。您可以查询   使用getProvider()方法确定   位置更新的来源。   需要许可   android.permission.ACCESS_FINE_LOCATION,   虽然如果未启用GPS   这个提供者可能只会返回粗糙   修复。 为什么一个人使用这个而不是其他提供者中的一个?为了节省电池寿命?被动提供程序是否仅在某些其他应用程序显式请求真实提供程序的数据时才返回有用信息,还是从该位置请求位置始终安全?     

解决方法

如您所指出的,此提供程序对于与用户位置一起使用但不希望浪费电池寿命的服务很有用。 例如,谷歌纵横将您的当前位置发送到网络服务,以让您的朋友知道您的位置。如果此服务每5分钟请求一次GPS修复,则设备电池将很快耗尽。如果该服务请求被动位置提供者,则每次启动Google地图时将发送位置,并且需要获取修复程序或其他一些应用程序来启动位置提供者更新,并且该服务可以对位置数据进行操作,而无需花费额外的精力进行位置更新。 如果您需要准确的位置数据,那么使用此提供程序将无济于事。对于大多数未在后台服务中运行的事物,此位置提供程序无用,因为它仅在其他应用触发用户位置更新时才发送更新。     ,要添加到@Janusz,当您收到由于其他提供者提供的修复程序并且希望从(NETWORK或GPS)的提供商那里获得此修复程序时,可以调用getProvider()来查找此修复程序。