Датчик GPS
Android позволяет использовать показания GPS-датчика в тех случаях, когда логика приложения напрямую зависит от расположения устройства в пространстве, относительно Земли. GPS-датчик не является стандартным датчиком в Android, поэтому для его использования применяется немного другой подход.
LocationManager - менеджер управления службой GPS, основной класс, которой представляет GPS-датчик в Android. Класспредоставляет доступ к системной службе локации, позволяющей приложению получать периодические обновления в течении некоторого промежутка времени.
Для инициализации объекта класса LocationManager используйте метод getSystemService() с параметром Location_Service.
Чтобы запустить службу GPS используйте метод requestLocationUpdate(String provider, long minTime, float minDistance, LocationListener listener).
Параметр provider задается в виде статической константы, которая определяет поставщика услуги GPS. Например, если указатьLocationManager.GPS_PROVIDER, в качестве параметра, то поставщиком услуги будет спутник GPS, а если указатьLocationManager.NETWORK_PROVIDER - то, поставщиком услуги будет сетевой протокол UDP или HTTP.
Второй параметр задает периодичность получения данных от GPS службы.
Третий параметр определяет минимальный размер области пространства, в котором мы не хотим получать уведомления от GPSслужбы. Этот параметр определяется логикой приложения.
Четвертый параметр - слушатель, который реагирует на изменения локации.
Для того, чтобы сбросить слушатель используйте метод removeUpdates(LocationListener listener).
Рассмотрим подробно интерфейс ocationListener. Он включает в себя следующие методы:
1. onLocationChanged(Location location) - метод вызывается всякий раз, когда происходит изменение показаний GPS датчика. Количество вызовов данного метода напрямую зависит от того, как вы на него подписались (параметры minDistance, minTime). Экземпляр класса Location содержит показания датчика. Его основные поля: londitude (долгота), latitude (широта), altitude (высота над уровнем моря), accuracy (точность), timestamp (время идентификации события).
2. onStatusChanged (String provider, int status, Bundle extras) - метод вызывается всякий раз, когда GPS программно терпит изменения(плохой сигнал, устройство не отвечает и т.д.). Например данный метод вызывается, когда GPS служба не в состоянии установить местоположение или недавно стала доступной после периода блокировки.
3. onProviderEnabled(String provider) - метод вызовется, если приложению доступна служба GPS, или вызовется после того, как пользователь включит GPS.
4. onProviderDisabled(String provider) - метод вызывается, если приложению недоступен GPS, вообще говоря, если устройство никогда не использовало службу GPS, то этот метод после автоматического вызова должен предоставить пользователю возможность включить GPS.