![](/img/trans.png)
[英]Not getting user location using GPS_PROVIDER / NETWORK_PROVIDER
[英]If Location Manager cannot fetch location with GPS_Provider, switch to NETWORK_Provider
我想使用GPS_Provider作为获取用户当前位置的主要方法,但是在某些情况下GPS无法正常工作。 如果我的应用程序无法使用GPS捕获用户位置,我想切换到NETWORK_PROVIDER。 我该如何实施?
lm = (LocationManager)context.getSystemService(Context.LOCATION_SERVICE);
//setting up criteria (biased toward GPS)
Criteria criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_FINE);
criteria.setHorizontalAccuracy(Criteria.ACCURACY_HIGH);
String providerName = lm.getBestProvider(criteria, true);
//requesting location updates (if app cant use GPS, switch to requestLocationUpdates.NETWORK_PROVIDER)
lm.requestLocationUpdates(providerName, 180000, 0, ll);
一种解决方案是异步请求更新GPS和网络。 对于GPS和网络,您将需要两个单独的侦听器。 无论哪个监听器首先返回,您都将停止获取其他提供程序的更新。 (即,如果您首先从网络获得结果,请停止获取网络和gps的更新。)
让我知道您是否感到困惑。
可能不是一个好主意,
我做了什么,我注册了网络和GPS提供程序...开始获取GPS坐标后,我将使用一个布尔变量使用location.getProvider()来获取要获取的网络提供程序的坐标。
对于我的实现。 我首先检查gps的位置,如果它返回null。 然后检查网络位置。
Location locationGps = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
Location locationNetwork = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
if (locationGps != null) {
//set location as gps
hasFix = true;
}
else if (locationNetwork != null) {
//set location as network
hasFix = true;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.