繁体   English   中英

如果位置管理器无法通过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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM