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

Posted

技术标签:

【中文标题】如果 WiFi 关闭,Android 的 network_provider locationprovider 从不返回任何内容?【英文标题】:Android's network_provider locationprovider never returns anything if WiFi is off? 【发布时间】:2011-11-05 23:29:56 【问题描述】:

如果有人可以提供帮助,那就太好了。我正在尝试在我的 android 应用程序中设置定位,并尝试在 GPS 和 NETWORK 提供程序上注册位置侦听器,根据所有示例。

但是,我的网络提供商从不响应任何与网络相关的内容,即只有在启用 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 中的参数,没有区别。

如果有什么我可以做的不同,指针将不胜感激!

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

【问题讨论】:

【参考方案1】:

我知道这已经快一年了,但对于寻找相同问题的其他人,我相信这是因为 onLocationChanged 仅在实际 NETWORK_PROVIDER 返回不同位置时才被调用。

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

即:

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

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

【讨论】:

以上是关于如果 WiFi 关闭,Android 的 network_provider locationprovider 从不返回任何内容?的主要内容,如果未能解决你的问题,请参考以下文章

Android上通过WiFi或USB的智能卡读卡器[关闭]

Android以编程方式打开/关闭WiFi热点

Android Wear OS 关闭 Wifi

Android WiFi开发教程——WiFi热点的创建与关闭

Android 11 WiFi热点打开与关闭接口

Android获取wifi MAC,关闭的wifi不能获取