【发布时间】:2013-11-17 19:05:38
【问题描述】:
我正在编写一个需要获取任何新位置的应用程序。准确度不计其数。我的应用程序将主要用于建筑物,因此我使用网络位置提供程序作为主要位置源。 我在某些设备上遇到以下问题: 我的代码无法访问任何位置。但是当我在同一台设备上启动谷歌地图时 - 它显示了正确的位置。我切换回我的程序,它再也看不到任何位置。 我的代码大致如下:
-
使用以下代码检查网络位置提供程序是否可用:
locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
-
如果启用了网络提供商 - 需要单个位置更新:
locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
-
代码还会启动 Timer 5 秒。如果代码在 5 秒内没有获得请求的位置更新,则计时器正在遍历所有可用的提供程序,试图获取最后一个已知位置并选择最佳位置:
位置 location = locationManager.getLastKnownLocation(provider);
所有这些移动的结果是网络提供商已打开,但代码没有得到任何更新。计时器启动,遍历所有提供者,并且它们都没有任何最后已知的位置。 getLastKnownLocation 方法对所有这些都返回 null。最奇怪的是,谷歌地图在此之前几秒钟就获得了正确的位置。我已经重新启动设备没有任何效果。 我检查了获取位置here 的最佳实践。他们似乎使用与我目前相同的方法。有没有我遗漏的技巧?
【问题讨论】:
-
你能发布你的完整代码吗?