- • по GPS адаптеру;
• по положению базовых станций и точек доступа Wi-Fi.
GPS является более точным методом определения положения, но может работать только на открытом воздухе, быстро сажает батарею и не возвращает положение так быстро, как хотелось бы, поэтому имеет смысл пользоваться одним из двух методов в зависимости от ситуации и конкретных задач.
Рассмотрим простой пример получения положения от GPS. Для начала необходимо зарегистрировать LocationListener в системе, который будет обрабатывать новые координаты, полученные от GPS.
- Код: выделить все
LocationManager lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 10000L, 500.0f, myLocationListener);
Теперь необходимо перегрузить метод onLocationChanged(Location location) в LocationListener, который будет обрабатывать полученные координаты.
public void onLocationChanged(Location location) {
if (location != null) {
double lat = location.getLatitude();
double lng = location.getLongitude();
// Необходимые действия с координатами
}
}
После окончания работы необходимо сообщить системе, что новые данные о положении больше не нужны:
- Код: выделить все
lm.removeUpdates(myLocationListener);
Если используется определение положения по базовым станциям и Wi-Fi, то необходимо разрешение ACCESS_COARSE_LOCATION. Если же используется GPS, то следует указать в манифесте разрешение ACCESS_FINE_LOCATION. Причем, если используются оба метода, то будет достаточно одного разрешения ACCESS_FINE_LOCATION.