Используйте LocationManager
.
LocationManager lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
Location location = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);
double longitude = location.getLongitude();
double latitude = location.getLatitude();
Вызов getLastKnownLocation()
не блокирует - а это значит , он вернется , null
если нет позиции в настоящее время доступна - так что вы , вероятно , хотите взглянуть на пропускание LocationListener
к requestLocationUpdates()
методу вместо, который даст вам асинхронные обновления вашего местоположения.
private final LocationListener locationListener = new LocationListener() {
public void onLocationChanged(Location location) {
longitude = location.getLongitude();
latitude = location.getLatitude();
}
}
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 2000, 10, locationListener);
Вам нужно будет дать ACCESS_FINE_LOCATION
разрешение вашему приложению, если вы хотите использовать GPS.
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
Вы также можете добавить ACCESS_COARSE_LOCATION
разрешение на случай, когда GPS недоступен, и выбрать провайдера местоположения с помощью getBestProvider()
метода .
Вот класс,
LocationFinder
чтобы найти местоположение GPS. Звонит этот классMyLocation
, который будет заниматься бизнесом.LocationFinder
Мое местонахождение
источник
С
google
вещами меняется очень часто: у меня не сработал ни один из предыдущих ответов.на основе этого обучения Google здесь, как вы делаете это с помощью
это требует настройки Google Play Services
Класс деятельности
использование
в вашей деятельности
И этот метод
источник
Вы можете получить текущее значение, используя это
`
`
источник
Вышеприведенные решения также верны, но иногда, если расположение равно нулю, приложение вылетает или работает неправильно. Лучший способ получить широту и долготу андроида это:
источник
Лучший способ это
Добавить файл манифеста разрешения
Затем вы можете получить местоположение GPS или, если местоположение GPS недоступно, тогда эта функция возвращает местоположение в сети.
источник
Обновление 2020: использование Kotlin Coroutine для получения широты, языка и адреса устройства
Это старый вопрос, и большинство ответов устарели. Вот как я делаю это мои приложения сейчас:
Этот класс помогает отслеживать местоположение устройства и возвращать список адресов устройства с помощью геокодирования. Поместите это в некоторый класс утилит
Добавить строки для оповещения в случае, если GPS отключен
Добавьте эти разрешения в манифест Android и запросите их при запуске приложения.
использование
Реализуйте
DeviceLocationListener
в своемActivity/Fragment
классеПереопределить
onDeviceLocationChanged
обратный вызов. Вы получите текущее местоположение вonDeviceLocationChanged
Для начала отслеживания создайте
DeviceLocationTracker
объект вonCreate
методе вашего. ПередайтеActivity
как контекст и это какDeviceLocationListener
.Вот и все, теперь вы начнете получать обновление местоположения в
onDeviceLocationChanged
.источник