我今天遇到了一个特殊的问题:我们需要用户地理位置来提供我们的服务,并且到目前为止它运行良好(在最近的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接收位置更新没有问题...
这只发生在这个设备上(它是一个测试设备,所以bootloader被锁定,没有root或任何其他可能破坏它的时髦东西)
我不知所措,有什么想法吗?
更新 由于我们重新启动设备问题没有再次发生,我仍然想知道导致问题的原因......
更新2
我昨天遇到了与Galaxy Nexus官方Android 4.2.2相同的问题。所以这似乎是Android的一个问题。
现在显然没有人知道如何解决这个问题,有没有办法检测Location API何时不再发送任何修复程序?除了检查lastKnownLocation()的时间戳?