Отсутствие точности GPS приводит к нулевому указателю
ACCESS_COARSE_LOCATION и ACCESS_FINE_LOCATON были включены в манифест. Также включены в активность:
import android.location.Location;
import android.location.LocationManager;
У меня есть слушатель для навигационного ящика со следующим классом
private class DrawerItemClickListener implements ListView.OnItemClickListener {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
Location location = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);
if (location != null)
{
final double longitude = location.getLongitude();
final double latitude = location.getLatitude();
}
selectItem(position);
}
}
Из этого location = null
и, таким образом, потерпит неудачу на location.getLongitude();
, Я могу, конечно, избежать этого с if (location != null)
но я хочу lat
а также long
найденный.
Почему местоположение всегда нулевое?
1 ответ
Поиск местоположения не является легкой задачей на аппаратной стороне. Вы не можете сказать устройству, что я хочу знать мое местоположение, поэтому дайте его мне прямо сейчас! Он должен наблюдать некоторые данные со спутников GPS, если на улице с четкой видимостью, в противном случае он использует другие доступные опции, такие как Wi-Fi. Пока ваше устройство не найдет правильное местоположение, вы должны подождать. Я рекомендую вам соблюдать onLocationChanged
событие и обновите свой просмотр списка, когда это событие происходит. Также хорошо использовать null
условие, пока оно не обнаружит ваше местоположение.