我今天遇到了一个特殊的问题:我们需要用户地理定位来提供我们的服务,并且到目前为止它运行良好(在最近的 Android Location API 发布之前实现,尚未更新)。我们这样注册
((LocationManager) ctx.getSystemService(Context.LOCATION_SERVICE))
.requestLocationUpdates((provider == WPS)?
LocationManager.NETWORK_PROVIDER : LocationManager.GPS_PROVIDER,
minTime, minDist, onChange(ctx, provider)); // onChange create a pending intent
在某些事件上,我们称之为
Location gpsLocation = LocMngr.getLastKnownLocation(LocationManager.GPS_PROVIDER);
Location wpsLocation = LocMngr.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
在运行 Android 4.0.3 和 HTC Sense 4.0 的 HTC One S 上,我们永远不会收到位置更新,最后一个已知位置对于 gps 返回 null ,对于 wps 返回 2 天前的位置。WIFI、GPS 和移动数据已打开,我试着在外面走来走去,看到该设备试图修复 gps,但显然它没有得到一个。其他设备使用相同的代码从 gps 或 wps 接收位置更新没有问题...
这只发生在这个设备上(它是一个测试设备,所以引导加载程序被锁定,没有植根或任何其他可能破坏它的时髦东西)
我很茫然,有什么想法吗?
更新 由于我们重新启动设备,问题没有再次发生,我仍然想知道是什么导致了问题......
更新 2
我昨天在 Galaxy Nexus 官方 Android 4.2.2 上遇到了同样的问题。所以这似乎是一般Android的问题。
现在显然没有人知道如何解决这个问题,有没有办法检测位置 API 何时不再发送任何修复?除了检查 lastKnownLocation() 的时间戳之外?