我有一个经过良好测试的应用,它使用GPS_PROVIDER
和NETWORK_PROVIDER
,使用相同的LocationListener
。
LocationManager
报告可以使用并启用gps,网络和被动位置提供程序。
我最近将Galaxy Nexus升级到4.1.1,现在NETWORK_PROVIDER
没有提供任何位置更改。使用运行4.0.4的Galaxy S III进行测试就像我习惯的那样,即使WiFi关闭,网络位置更新也会通过。当WiFi关闭时,我会获得手机信号塔的位置。
在这里与同事交谈时,我不能排除某种巧合的硬件故障或某些我没有找到的默认设置更改。我在整个设置中进行了双重检查,看起来一切都已正确设置。
WiFi已开启,Cell网络已开启,GPS已开启,网络服务均已启用。我的办公桌上没有GPS信号,所以当网络位置无法提供结果时很容易注意到。
其他人遇到与Verizon Galaxy Nexus + 4.1.1或4.1.1以及任何手机类似的问题?
作为额外的皱纹,谷歌地图找到了我的位置,但我的PASSIVE_PROVIDER
也没有生成位置。
答案 0 :(得分:7)
关于NETWORK_PROVIDER
。
我不知道出了什么问题或原因,但是我在Galaxy Nexus上移除/更换了电池和SIM卡,网络提供商似乎提供了正确的结果。
给我的教训?即使您确定网络提供商可用,已启用并已连接,也不要认为您将向听众报告位置。
在我的情况下,如果我没有报告任何位置,我需要添加另一张检查以确保我的LocationListener
无法继续运行。
答案 1 :(得分:2)
我已经读过某人关于这个问题的假设。 它是"在某些设备中,如果请求后没有更新,则网络提供商不会给出回叫"。
考虑这种可能性。
在我的情况下,我在开始当前位置跟踪之前使用getLastKnownLocation()
。
在this article中尝试 ctrl + f getLastKnownLocation
。