Я до сих пор получаю текущее местоположение с GoogleApiClient
, но я только что заметил, что это намного проще сделать с помощью LocationManager
, используя LocationListener
, поскольку он может даже обнаруживать, когда GPS-сервис был включен или выключен пользователем.Как получить начальное местоположение с помощью LocationManager?
Но у меня возникла проблема при получении первого местоположения пользователя после инициализации LocationManager
.
LocationManager
имеет 4 слушателей, но никто из них не дает вам вашего первого местоположения. У него есть слушатель onLocationChanged
, но он активируется только при перемещении.
Это, как я использую его:
// Init LocationManager (needed to track if GPS is turned on or not
locationManager = (LocationManager) getApplicationContext().getSystemService(LOCATION_SERVICE);
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this);
end of oncreate......
/*
LocationListener (Listening if GPS service is turned on/off)
*/
@Override
public void onProviderEnabled(String provider) {
}
@Override
public void onLocationChanged(Location location) {
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
}
@Override
public void onProviderDisabled(String provider) {
}
Нет, НИКОГДА НЕ используйте этот код. У этого есть тонна ошибок, в том числе это не всегда использование GPS, возможно возвращение устаревших данных или null, и это не всегда имеет место, даже если оно говорит, что это делает. См. Http://gabesechansoftware.com/location-tracking/ для полной записи –