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

发布于 2024-12-01 16:10:05 字数 860 浏览 4 评论 0原文

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

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

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

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

Would be great if someone could assist. I am trying to setup positioning in my Android app and try and register locationlisteners on both the GPS and NETWORK providers, as per all examples out there.

However, my network provider never responds anything network related, i.e. only if WiFi is enabled do i get a response. If not, it always times out.

My code:

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);

So, if Wifi is on i get a response pretty quick, but if i only have GSM on, nothing happens, and i see nothing in the android logcat either.

I have tried changing the params in the requestlocationupdates aswell, no difference.

If there is anything i can do different, pointers would be MUCH appreciated!

EDIT: of course, i've tried the network positioing other ways, via carrier positioning (using sms) which works, tried same setup with google maps, maps can get position i think. Of course i have reception :)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

洒一地阳光 2024-12-08 16:10:05

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

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

即:

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

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

I know this is almost a year old, but for others searching for the same issue, I believe this is due to onLocationChanged only being called whenever the actual NETWORK_PROVIDER returns a different location.

So in this case, you should use the cached NETWORK_PROVIDER location if you reach some sort of timeout, because the cached location should be the current.

i.e.:

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

Then check if the getTime() and distanceTo() are reasonable.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文