Android: откат GPS от тонкого к грубому - PullRequest
3 голосов
/ 29 декабря 2010

Привет,

Кто-нибудь знает, как я могу получить грубые координаты GPS, когда у меня нет исправления, и получить точные координаты GPS, когда у меня есть исправление?

Я пробовал поискать образец кода, но безрезультатно.

Я нашел это: http://www.android10.org/index.php/articleslocationmaps/226-android-location-providers-gps-network-passive

Но я не знаю, как реализовать откат к грубому / обновлению до штрафа.

Я надеюсь, что кто-то может помочь. Заранее спасибо,

Ответы [ 2 ]

3 голосов
/ 29 декабря 2010

Отличное введение в предмет можно найти в документации . Основная идея заключается в том, что вы включаете прослушивание обновлений от разных провайдеров. При получении нового местоположения вы сравниваете его с предыдущим сохраненным местоположением (примерная функция приведена в приведенной выше ссылке).

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

2 голосов
/ 29 декабря 2010

Вы можете получить последнее известное местоположение, используя код ниже. Он получает поставщиков местоположения и перебирает массив в обратном направлении. то есть начинается с GPS, если нет GPS, то получает сетевое местоположение. Вы можете вызывать этот метод всякий раз, когда вам нужно получить местоположение.

private double[] getGPS() {
LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);  
List<String> providers = lm.getProviders(true);

/* Loop over the array backwards, and if you get an accurate location, then break         out the loop*/
Location l = null;

for (int i=providers.size()-1; i>=0; i--) {
    l = lm.getLastKnownLocation(providers.get(i));
    if (l != null) break;
}

double[] gps = new double[2];
if (l != null) {
    gps[0] = l.getLatitude();
    gps[1] = l.getLongitude();
}
return gps;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...