android.location.LocationManager.PASSIVE_PROVIDER 是啥意思?

Posted

技术标签:

【中文标题】android.location.LocationManager.PASSIVE_PROVIDER 是啥意思?【英文标题】:What is the meaning of android.location.LocationManager.PASSIVE_PROVIDER?android.location.LocationManager.PASSIVE_PROVIDER 是什么意思? 【发布时间】:2011-08-05 01:02:17 【问题描述】:

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

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

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

【问题讨论】:

【参考方案1】:

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

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

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

【讨论】:

伟大的洞察力!所以,总结一下,如果有人至少需要一个最近的可能位置,他们不应该使用passive_provider【参考方案2】:

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

【讨论】:

以上是关于android.location.LocationManager.PASSIVE_PROVIDER 是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章

在空对象引用上调用虚拟方法“double android.location.Location.getLatitude()”时出错

尝试在空对象引用上调用虚拟方法“double android.location.Location.getLatitude()”,在下面这一行中显示错误

尝试在空对象引用上调用虚方法'double android.location.Location.getLatitude()'[duplicate]

无法在 android studio 中获取位置

为了获得方向,哪种方法更好?