Главная » Разработка для Android » Изменение вашего местоположения в программе Where Am I?

0

В следующем  примере1  приложение Where  Am I? будет отслеживать ваше текущее местоположение, принимая сообщения о его изменении. Ин- тервал обновлений — две секунды, и только при перемещении  устройства более чем на 10 метров.

1     Все фрагменты  кода в этом примере — часть проекта Where  Am I? из главы 8, их можно загрузить с сайта Wrox.com.

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

1. Сперва  откройте  Активность WhereAmI в проекте Where  Am I?. До- полните метод onCreate, чтобы найти лучший  вид LocationProvider, который  имеет высокую  точность  и потребляет  как можно меньше энергии.

@Override

public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main);

LocationManager locationManager;

String context = Context.LOCATION_SERVICE;

locationManager = (LocationManager)getSystemService(context);

Criteria criteria = new Criteria();

criteria.setAccuracy(Criteria.ACCURACY_FINE);

criteria.setAltitudeRequired(false); criteria.setBearingRequired(false); criteria.setCostAllowed(true); criteria.setPowerRequirement(Criteria.POWER_LOW);

String provider = locationManager.getBestProvider(criteria, true);

Location location = locationManager.getLastKnownLocation(provider);

updateWithNewLocation(location);

}

2. Создайте новый экземпляр класса LocationListener, который вызывает метод updateWithNew, принадлежащий объекту Location, каждый раз, когда фиксируется изменение  местоположения.

private final LocationListener locationListener = new LocationListener() {

public void onLocationChanged(Location location) {

updateWithNewLocation(location);

}

public void onProviderDisabled(String provider){

updateWithNewLocation(null);

}

public void onProviderEnabled(String provider){ }

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

};

3. Вернитесь к обработчику onCreate и вызовите метод requestLocation- Updates, передав ему в качестве параметра новый объект LocationLis- tener.  Он должен следить за изменениями местоположения каждые

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

@Override

public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main);

LocationManager locationManager;

String context = Context.LOCATION_SERVICE;

locationManager = (LocationManager)getSystemService(context);

Criteria criteria = new Criteria(); criteria.setAccuracy(Criteria.ACCURACY_FINE); criteria.setAltitudeRequired(false); criteria.setBearingRequired(false); criteria.setCostAllowed(true); criteria.setPowerRequirement(Criteria.POWER_LOW);

String provider = locationManager.getBestProvider(criteria, true);

Location location =

locationManager.getLastKnownLocation(provider);

updateWithNewLocation(location);

locationManager.requestLocationUpdates(provider, 2000, 10, locationListener);

}

Если вы запустите приложение и поменяете местоположение устройства, то увидите, что при этом изменяются данные в элементе TextView.

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

По теме:

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