У меня проблемы с получением LocationListener для вызова функции обратного вызова onLocationChanged () на моем телефоне. Когда я запускаю свой код в эмуляторе, он работает нормально, обратный вызов вызывается каждый раз, когда я делаю гео-исправление.
Когда я запускаю приложение на своем телефоне, ничего не происходит. Обратный звонок никогда не вызывается. У меня есть местоположение, включенное как по GPS, так и по беспроводной связи в моих настройках. Приложение имеет все разрешения на использование для разрешений местоположения.
Кроме того, когда я вызываю getLastKnownLocation () для объекта LocationManager, происходит сбой моего приложения. (Все же только на моем дурацком телефоне). Даже если я пытаюсь поймать исключение, которое вызывает его сбой, оно все равно просто дает сбой, поэтому я даже не могу получить никакой информации о том, что вызывает его сбой. Это очень расстраивает.
LocationManager.getBestProvider () возвращает GPS, и когда я открываю карты Google, он мгновенно находит мое местоположение. Какого черта здесь происходит? Есть ли какой-нибудь способ выяснить, почему он зависает на моем телефоне?
private void setupLocListener(){
Criteria c = new Criteria();
c.setAccuracy(Criteria.ACCURACY_FINE);
c.setAltitudeRequired(false);
c.setBearingRequired(false);
c.setSpeedRequired(false);
c.setCostAllowed(false);
lm.requestLocationUpdates(lm.getBestProvider(c,true), 0, 0, new LocationListener() {
@Override
public void onLocationChanged(Location arg0) {
map.setLocation(arg0);
}
public void onProviderDisabled(String arg0) {
}
public void onProviderEnabled(String arg0) {
}
public void onStatusChanged(String arg0, int arg1, Bundle arg2) { }
});
}