Ответ 1
Вы можете сделать это с помощью LocationManager. getLastKnownLocation
Мне нужно получить текущее местоположение пользователя в приложении Android, поэтому я прочитал несколько руководств и образцов в Интернете, но я вижу, что во всех примерах местоположение извлекается из "onLocationChange", что означает, что каждый раз при изменении местоположения выполняется код в "onLocationChange".
Мне нужно только получить местоположение пользователя в момент запуска приложения.
Спасибо за вашу помощь!
Вы можете сделать это с помощью LocationManager. getLastKnownLocation
Вы можете узнать последнее местоположение, используя приведенный ниже код. Он получает провайдеров местоположения и петли над массивом назад. i.e начинается с GPS, если GPS не получает местоположение сети. Вы можете вызвать этот метод, когда вам нужно найти его.
private double[] getGPS() {
LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
List<String> providers = lm.getProviders(true);
/* Loop over the array backwards, and if you get an accurate location, then break out the loop*/
Location l = null;
for (int i=providers.size()-1; i>=0; i--) {
l = lm.getLastKnownLocation(providers.get(i));
if (l != null) break;
}
double[] gps = new double[2];
if (l != null) {
gps[0] = l.getLatitude();
gps[1] = l.getLongitude();
}
return gps;
}
использовать LocationManager.requestSingleUpdate()
Поместите это в основное действие:
boolean bFirst = true;
function void onCreate(blabla) {
if(bFirst) {
//Do your stuff to get the location
bFirst = false;
}
}
Поместите то же самое в onResume();
Для метода getGPS()
, который Фобос предложил работать правильно, вы должны разрешить доступ в вашем AndroidManifest.xml
Это избавит вас от ошибки получения 0.0
Добавьте следующие строки:
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.LOCATION_HARDWARE" />