我试图从网络中获取地理定位:
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地图应用程序也可以通过网络接收地理位置位置和安全 - > 使用无线网络。我不知道它是如何工作的,但也许它使用完全不同的方法。
事实是:如果我启用了GPS,它会使用GPS。如果我已禁用GPS,但启用了蜂窝网络连接,则它使用网络进行地理定位,与WiFi连接和复选框无关,并且#34; 使用无线网络"。
我怎么能这样做?
感谢。
答案 0 :(得分:5)
在我检索地理定位的工作中,wifi接入点只会定期发送他们的位置(30秒到5分钟)。但是,要知道NETWORK_PROVIDER
也会从手机信号塔收到(这种信息很慢且不准确,但在建筑物中有更好的信号)。
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationListenerNetwork);
这就是我使用手机的gps找到地理位置最快的结果,但是使用NETWORK_PROVIDER
工作,它真的很慢,而且我找不到一个好的解决方案来强制更新位置更快