Главная » Разработка для Android » Отслеживание передвижений

0

Большинство приложений, имеющих дело с геолокацией, должны реаги- ровать на передвижения пользователя. Простое запрашивание результатов у LocationManager не приносит новые обновления из LocationProvider.

Используйте метод requestLocationUpdates в связке с LocationListener для получения обновлений каждый раз, когда местоположение меняется. Объект LocationListener также генерирует события при изменении статуса и доступности  источника.

Метод requestLocationUpdates принимает  либо название  конкретного типа LocationProvider, либо объект Criteria, содержащий список параметров для определения подходящего источника.

Чтобы  увеличить  эффективность, минимизируя при этом затраты и энергопотребление, вы также можете указать  минимальные интервал и дистанцию между обновлениями данных о местоположении.

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

Листинг 8.2. Запрос на обновление данных о местоположении

String provider = LocationManager.GPS_PROVIDER;

int t = 5000; // миллисекунды int distance = 5; // meters

LocationListener myLocationListener = new LocationListener() {

public void onLocationChanged(Location location) {

// Обновите приложение, основываясь на данных местоположения.

}

public void onProviderDisabled(String provider){

// Обновите приложение, если источник отключен.

}

public void onProviderEnabled(String provider){

// Обновите приложение, если источник включен.

}

public void onStatusChanged(String provider, int status, Bundle extras){

// Обновите приложение, если состояние аппаратного обеспечения источника изменилось.

}

};

locationManager.requestLocationUpdates(provider, t, distance, myLocationListener);

Когда значения  минимальных интервала и дистанции  превысятся, LocationListener вызовет собственное событие onLocationChanged.

ПРИМЕЧАНИЕ

Вы можете запрашивать сразу несколько обновлений для разных экзем- пляров LocationListener и использовать разные минимальные значения. Общий шаблон проектирования заключается в создании одиночного приемника событий для вашего приложения, который будет трансли- ровать Намерения, оповещая другие компоненты об изменениях место- положения. Это централизует работу ваших приемников событий и га- рантирует, что аппаратное обеспечение, связанное с LocationProvider, будет использовано максимально эффективно.

Чтобы  остановить  обновления информации о местоположении, вы- зовите метод removeUpdates, как показано  в следующем  фрагменте  кода. Передайте  ему экземпляр LocationListener, уведомления от которого  вы больше не хотите получать.

locationManager.removeUpdates(myLocationListener);

Большинству приемников GPS  требуются  значительные энергозатра- тых. Чтобы минимизировать их, вы должны отключать обновления в вашем приложении каждый раз, когда это только возможно, особенно если ваше приложение не развернуто  на экран, а изменения местоположения нужны для обновления пользовательского интерфейса Активности. Вы можете еще улучшить  производительность, сделав минимальный интервал  между об- новлениями как можно более длинным.

Конфиденциальность важна, когда ваше приложение отслеживает место- положение  пользователя. Убедитесь, что оно использует  геолокационные данные устройства,  а вы не забывайте  с уважением  относится  к частной жизни пользователя:

отслеживайте местоположение только тогда, когда это необходимо для вашего приложения;

оповещайте пользователя о том, что начинаете отслеживать его пере- мещения, ознакомьте его с тем, как именно планируется хранить и ис- пользовать  эту информацию;

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

Источник: Майер P. Android 2 : программирование приложений для планшетных компьютеров и смартфонов : [пер. с англ. ] / Рето Майер. — М. : Эксмо, 2011. — 672 с. — (Мировой компьютерный бестселлер).

По теме:

  • Комментарии