如果WiFi关闭,Android的network_provider locationprovider永远不会返回任何内容?

时间:2011-08-29 11:51:09

标签: android location locationmanager

如果有人可以提供协助会很棒。我试图在我的Android应用程序中设置定位,并尝试在GPS和NETWORK提供商上注册locationlisteners,根据所有示例。

但是,我的网络提供商从不响应任何与网络相关的内容,即只有启用WiFi才能得到响应。如果没有,它总是超时。

我的代码:

lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 1, locationListener);
....
public void onLocationChanged(Location location) {
        Log.d(TAG, "onLocationChanged;provider;" + location.getProvider() + ",lon;" + location.getLongitude() + ";lat;" + location.getLatitude() + ";accuracy;" + location.getAccuracy());
        resultHandler.handleLocationResult(location, false);
        lm.removeUpdates(this);

所以,如果启用了Wifi,我会很快得到响应,但如果我只启用了GSM,则没有任何反应,我在android logcat中也看不到任何内容。

我已尝试更改requestlocationupdates中的params,也没有区别。

如果有什么我可以做的不同,指针将非常感谢!

编辑:当然,我已经尝试过网络定位其他方式,通过运营商定位(使用短信)工作,尝试与谷歌地图相同的设置,地图可以得到我认为的位置。当然我有接待处:))

1 个答案:

答案 0 :(得分:4)

我知道这已经快一年了,但是对于其他搜索相同问题的人来说,我认为这是因为只要实际的NETWORK_PROVIDER返回不同的位置,就会调用onLocationChanged。

因此,在这种情况下,如果达到某种超时,则应使用缓存的NETWORK_PROVIDER位置,因为缓存的位置应该是当前的。

即:

Location lastNetworkLocation = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);

然后检查getTime()和distanceTo()是否合理。