【发布时间】:2017-07-24 15:36:32
【问题描述】:
我看到LocationManager.NETWORK_PROVIDER.getLastKnownLocation() 返回了最后一个位置,但是位置是如何更新的?如果 GPS 被禁用,它会完全依赖 WiFi 检测到的 BSSID 吗?如果 WiFi 也被禁用了怎么办?是否将移动服务塔数据考虑在内?
【问题讨论】:
标签: android geolocation gps android-gps
我看到LocationManager.NETWORK_PROVIDER.getLastKnownLocation() 返回了最后一个位置,但是位置是如何更新的?如果 GPS 被禁用,它会完全依赖 WiFi 检测到的 BSSID 吗?如果 WiFi 也被禁用了怎么办?是否将移动服务塔数据考虑在内?
【问题讨论】:
标签: android geolocation gps android-gps
是的,定位服务基本上分为三个层次:GPS、WiFi、手机信号塔。
GPS 与GPS_PROVIDER 一起使用,WiFi 和手机信号塔都进入NETWORK_PROVIDER 存储桶。
引用NETWORK_PROVIDER description:
该提供商根据手机信号塔和WiFi接入点的可用性确定位置。通过网络查找检索结果。
【讨论】:
getLastKnownLocation() 调用向 Google(Map API?)发出请求?如果是 Map 的 API,每次调用是否收费?
getLastKnownLocation() 不做任何请求,因为位置是已知的。但是,如果您想获得一个最新的位置,它会将 WiFi MAC 地址或mobile cell ID 发送给 Google 以解析其位置。
requestLocationUpdates(),然后调用getLastKnownLocation()?
requestLocationUpdates(),无论如何你都会从LocationListener获得一个新的位置,所以之后不需要直接使用getLastKnownLocation()(它只会再次返回相同的位置)。