0

我想使用 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);
4

3 回答 3

0

一种解决方案是异步请求 GPS 和 NETWORK 的更新。GPS 和 NETWORK 都需要两个单独的侦听器。无论哪个侦听器首先返回,您都将停止获取其他提供者的更新。(即,如果您首先从网络获得结果,请停止获取网络和 gps 的更新。)

让我知道您是否感到困惑。

于 2013-01-03T22:09:10.363 回答
0

对于我的实施。我首先检查 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;
        }
于 2013-01-03T23:07:35.397 回答
0

可能是也可能不是一个好主意,

我所做的,我注册了网络和 GPS 提供商......一旦我开始获取 GPS 坐标,然后我将使用 location.getProvider() 使用布尔变量获取正在获取的网络提供商的坐标。

于 2013-01-03T22:53:03.790 回答