Android:如果手机通过 WiFi 连接,则无法从网络获取地理位置

Posted

技术标签:

【中文标题】Android:如果手机通过 WiFi 连接,则无法从网络获取地理位置【英文标题】:Android: can't get geolocation from network if phone is connected via WiFi 【发布时间】:2012-02-19 17:12:20 【问题描述】:

我正在尝试从这样的网络获取地理位置:

boolean network_enabled = false;
LocationManager lm;
lm = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);

try
   network_enabled = lm.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
 catch(Exception ex)
   Log.v("my_log_tag", "network location exception: " + ex.toString());


if(network_enabled)
   lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, locationListenerNetwork);

如果我的手机仅通过蜂窝网络连接,效果很好,但我有一个问题:如果我的手机不仅通过蜂窝网络连接,而且还连接到某个 WiFi 接入点(例如,我的家庭接入点),那么我没有收到任何位置。似乎 android 尝试使用我的 WiFi 接入点获取地理位置,但它当然不能。如何让 Android 从手机网络获取位置并忽略任何 WiFi 连接?

我绝对知道这是可能的,因为例如,Yandex Maps application 就可以了。

我需要说更多细节:即使我没有启用复选框 设置 -> 位置和安全 -> ,这个 Yandex 地图应用程序也可以通过网络接收地理位置em>使用无线网络。我不知道它是如何工作的,但也许它使用了完全不同的方法。

事实是:如果我启用了 GPS,它会使用 GPS。如果我禁用了 GPS,但启用了蜂窝网络连接,则它使用网络进行地理定位,独立于 WiFi 连接和复选框“使用无线网络”。

我该怎么做?

谢谢。

【问题讨论】:

【参考方案1】:

在我完成的检索地理位置的工作中,wifi 接入点只会定期发送其位置(30 秒到 5 分钟)。但是,请了解NETWORK_PROVIDER 也接收来自手机信号塔的信号(速度慢且不准确,但在建筑物中信号更好)。

locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationListenerNetwork);

这就是我如何使用手机的 gps 找到最快的地理定位结果的方法,但是使用 NETWORK_PROVIDER 可以工作,它真的很慢,而且我还没有找到一个好的解决方案来强制更快地更新位置。

【讨论】:

以上是关于Android:如果手机通过 WiFi 连接,则无法从网络获取地理位置的主要内容,如果未能解决你的问题,请参考以下文章

adb通过wifi连接android设备

ADB通过WiFi连接手机调试Android应用

从 Android 手机/其他连接的设备通过 WiFi 网络连接 XAMPP 网站

安卓手机怎么连接WiFi

哪位说说如何用androidadb连接手机

通过wifi 连接 adb 到 手机