Я хочу получить точное & точное текущее местоположение. Для этого я использовал метод определения местоположения requestLocationUpdates()
, но для вызова метода onLocationChanged()
потребуется столько времени. Поэтому я установил для этого таймер как 20 секунд. Я имею в виду, что метод onLocationChanged()
не вызывается даже после 20 секунд, после чего я решил заняться последним известным местоположением. Здесь я столкнулся с проблемой. getLastKnownLocation()
возврат null.android- Как обновить местоположение, не открывая карты/навигационное приложение
Но я хочу местоположение. Здесь я нашел одно решение для этого. Именно из-за тестирования устройство не имеет недавнего обновления местоположения с поставщиком gps. Поэтому нам нужно вручную открыть приложение «Карты/Навигация», после чего оно вернет местоположение. что нам нужно сделать для получения местоположения вместо открытия приложения «Карты». Я думаю, что мы должны сделать то же самое, что и приложение Maps для обновления местоположения. Как мы реализуем это, не открывая его.
// Получить текущее местоположение с помощью requestLocationUpdates
public void getLocation() {
locationManager.requestLocationUpdates(strProvider, 0, 0,
CurrentlocationListener);
}
LocationListener CurrentlocationListener = new LocationListener() {
@Override
public void onLocationChanged(Location location) {
// TODO Auto-generated method stub
if (location != null) {
locationManager.removeUpdates(this);
double lat = location.getLatitude();
double lng = location.getLongitude();
String strCurrentLatitude = String.valueOf(lat);
String strCurrentLongitude = String.valueOf(lng);
System.out
.println("Current Latitude and Longitude(onLocation Changed): "
+ strCurrentLatitude
+ ","
+ strCurrentLongitude);
}
}
@Override
public void onProviderDisabled(String provider) {}
@Override
public void onProviderEnabled(String provider) {}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {}
};
// Получить текущее местоположение с помощью lastknownlocation.
String location_context = Context.LOCATION_SERVICE;
locationManager = (LocationManager) getSystemService(location_context);
Criteria crit = new Criteria();
crit.setAccuracy(Criteria.ACCURACY_FINE);
strProvider = locationManager.getBestProvider(crit, true);
Location location = locationManager
.getLastKnownLocation(strProvider);
System.out.println("location(geoPoint1): " + location);
String strCurrentLatitude = "0", strCurrentLongitude = "0";
if (location != null) {
strCurrentLatitude = String.valueOf(location
.getLatitude());
strCurrentLongitude = String.valueOf(location
.getLongitude());
}
Очевидный способ - сохранить координаты перед закрытием приложения и загрузить их после запуска. Посмотрите еще одно решение: http://stackoverflow.com/questions/9885871/emulate-a-broadcast-in-android – Vyacheslav
@trololo: я хочу, чтобы текущее местоположение даже в первый раз открывалось в этом случае, в этом случае у нас нет координаты правые. Как мы можем найти место? – naresh