Отсутствие точности 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 условие, пока оно не обнаружит ваше местоположение.

Другие вопросы по тегам