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

Dmi*_*ank 0 networking android geolocation

我正试图从网络中获取地理定位:

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);
}
Run Code Online (Sandbox Code Playgroud)

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

我当然知道这是可能的,因为,例如,Yandex Maps应用程序做得很好.

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

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

我怎么能这样做?

谢谢.

Jos*_*owe 5

在我检索地理位置的工作中,wifi接入点只会定期发送它们的位置(30秒到5分钟).但是,要明白NETWORK_PROVIDER从细胞塔接收(这是缓慢和不准确的,但在建筑物中有更好的信号).

locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationListenerNetwork);
Run Code Online (Sandbox Code Playgroud)

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