проблемы, чтобы получить Локатор, используя сеть и провайдера GPS - PullRequest
0 голосов
/ 30 января 2012

Привет! В моем приложении реализован приемник местоположения, который использует сетевой провайдер для получения значений GPS.Работает нормально, но теперь я хочу получить GPS с помощью сетевого провайдера и GPS-провайдера.я пытаюсь, но получаю то же значение.

здесь мой код

   Location networkLoc = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
    Location gpsLoc = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);

Где я должен использовать networkLoc и gpsLoc?

    @Override
    public void onLocationChanged(Location location) {

        double lat1 = (double) (location.getLatitude());//here i get the latitude value..how to know these values are from different provider
        double lng1= (double) (location.getLongitude());
        latituteField.setText(Double.toString(lat));
        longitudeField.setText(Double.toString(lng));


    }

1 Ответ

1 голос
/ 30 января 2012

Может случиться так, что если у пользователя включен GPS, ваша линия

provider = locationManager.getBestProvider(criteria, false);

уже возвращает LocationManager.GPS_PROVIDER, поэтому вы просто запрашиваете getLastKnownLocation(provider) дважды с одним и тем же провайдером. Попробуйте вместо этого:

    Location networkLoc = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
    Location gpsLoc = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);

или, если вам действительно все равно, какой использовать

List<String> providers = locationManager.getProviders(false);
Location[] loc = new Location[providers.size];
int i = 0;
for (String provider: providers){
    loc[i++] = locationManager.getLastKnownLocation(provider);
}

РЕДАКТИРОВАТЬ: из-за рефакторинга вопроса

//query provider from Location
public void onLocationChanged(Location loc){
    String provider = loc.getProvider();
    if (provider.equals(LocationManager.GPS_PROVIDER)){
        //GPS Location
    } else if (provider.equals(LocationManager.NETWORK_PROVIDER)){
        //Network Location
    }
    ....
}
...