Как найти мое текущее местоположение (широта + долгота) по нажатию кнопки в Android? - PullRequest
3 голосов
/ 22 апреля 2011

Я видел различные фрагменты кода, которые находят координаты выходов из различных методов, таких как onlocationupdate () или onstatusChanged () .... мне нужен простой код, который выбирает мои текущие координаты GPS по нажатию кнопки ...

Ответы [ 3 ]

11 голосов
/ 22 апреля 2011

В ответе Yogsma указано, как получать автоматические обновления.Ссылка, на которую он ссылается, предоставляет все, что вам нужно, но вот краткая версия того, как выполнить обновление вручную:

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

// getLocationButton is the name of your button.  Not the best name, I know.
getLocationButton.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
        // instantiate the location manager, note you will need to request permissions in your manifest
        LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
        // get the last know location from your location manager.
        Location location= locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
        // now get the lat/lon from the location and do something with it.
        nowDoSomethingWith(location.getLatitude(), location.getLongitude());
    }
});

Конечно, вам также необходимо зарегистрировать свою деятельность в службе менеджера местоположений в XML-файле манифеста:

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
7 голосов
/ 22 апреля 2011
LocationManager mLocManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
                LocationListener mLocListener = new MyLocationListener();
                mLocManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, mLocListener);

public class MyLocationListener implements LocationListener{        

        public void onLocationChanged(Location loc) {           
            String message = String.format(
                        "New Location \n Longitude: %1$s \n Latitude: %2$s",
                        loc.getLongitude(), loc.getLatitude()
                );
                Toast.makeText(LbsGeocodingActivity.this, message, Toast.LENGTH_LONG).show();
        }
        public void onProviderDisabled(String arg0) {

        }
        public void onProviderEnabled(String provider) {

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

        }       
    }

Прочитайте это подробно http://www.javacodegeeks.com/2010/09/android-location-based-services.html

4 голосов
/ 22 апреля 2011

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

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

...