Я знаю, что этот вопрос был задан, но я не могу заставить его работать.
Этот код переходит к разделу местоположения запроса.Я знаю, что настройки сейчас плохой выбор, но я просто пытаюсь получить результаты, я не беспокоюсь о батарее телефона прямо сейчас.В отладчике Eclipse я вижу, что
"libloc" - "Latitude: XXXXX"
"libloc" - "Longitude: XXXX"
"libloc" - "Accuracy: 27000"
Что означает, что GPS работает.Но я не могу получить фактическое местоположение, потому что ни один из методов в LocationListener
не запускается.
LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
Location loc = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);
if(loc==null){
String provider = null;
if ( lm.isProviderEnabled( LocationManager.GPS_PROVIDER ) ) {
provider = LocationManager.GPS_PROVIDER;
} else {
Toast.makeText(this, "GPS not available", 3000).show();
if(lm.isProviderEnabled(LocationManager.NETWORK_PROVIDER)) {
provider = LocationManager.NETWORK_PROVIDER;
} else {
Toast.makeText(this, "Provider Not available", 3000).show();
}
}
if(provider != null) {
lm.requestLocationUpdates(provider, 0, 0, locationListener);
}
} else {
Latitude = loc.getLatitude();
Longitude = loc.getLongitude();
}
Это мой объект Location Listener, который объявлен немного ниже верхнего кода. Ни один из этих методов не вызывается (следовательно, функции Log.d, так что я могу добавить точки останова, но в этом слушателе ничего не вызывается).
double Latitude = 0.0;
double Longitude = 0.0;
LocationListener locationListener = new LocationListener(){
@Override
public void onLocationChanged(Location location) {
Latitude = location.getLatitude();
Longitude = location.getLongitude();
}
@Override
public void onProviderDisabled(String provider) { Log.d("GPS", "HEY THERE"); }
@Override
public void onProviderEnabled(String provider) { Log.d("GPS", "HEY THERE"); }
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
Log.d("GPS", "HEY THERE");
}
};
Дополнительная информация из комментариев:
Дело не в этом.loc = lm.getLastKnownLocation (LocationManager.GPS_PROVIDER);всегда возвращает ноль.- Перегрузка119 50 минут назад
Что происходит, когда вы перебираете остальную часть кода в выражении IF?- Джек, 44 минуты назад
В итоге я попадаю на эту строку: lm.requestLocationUpdates (provider, 0, 0, locationListener);Затем в сообщении консоли отладчика я вижу, как отображаются широта, долгота, точность - и они отображаются неоднократно, поэтому я предполагаю, что GPS активирован и он получает местоположение.Проблема в том, что locationListener не запускает ни один из своих методов.- Overload119 41 мин. Назад
И я посмотрел ссылку, мой код такой же.- Overload119 41 мин. Назад Какое значение имеет провайдер на тот момент?- Джек, 30 минут назад
Значение провайдера - "gps" - Overload119 15 минут назад
Можете ли вы установить некоторые точки останова в onLocationChanged, чтобы увидеть, когда / если он запускается?Если вы уже сделали это, после запуска приложения может пройти несколько секунд после регистрации прослушивателя, чтобы оно запустилось.Переместите свой телефон вокруг и подождите.В какой-то момент он должен срабатывать несколько раз.- Джек, 12 минут назад
imm.io / 8vXb Вот скриншот - отладчик показывает, что GPS работает (обратите внимание, что это событие появляется снова и снова).У меня уже была точка останова onLocationChanged () - она никогда не достигает ее даже после ожидания в течение длительного периода времени.Широта / долгота, которую он возвращает, всегда одинакова.- Overload119 39 секунд назад edit
Я также пытался вызвать lm.getLastKnownLocation (LocationManager.GPS_PROVIDER);с помощью кнопки, и нажмите ее после того, как сообщения консоли показывают, что широта / долгота были получены.- Местоположение, возвращаемое методом, равно нулю.- Перегрузка119 0 сек. Назад edit