Вы неправильно понимаете, как работает местоположение в Android. getLastKnownLocation () не предоставляет ноль, если у GPS нет исправления, он возвращает ноль, если нет предыдущего известного местоположения - местоположение не должно исходить из GPS (оно может быть получено через Wi-Fi или мобильную сеть), и вызов этого метода делает не давать указание структуре местоположения возвращать новое местоположение.
Вам необходимо начать снова, после полного прочтения и понимания этой страницы:
http://developer.android.com/guide/topics/location/obtaining-user-location.html
Он включает в себя все, что вам нужно для обработки местоположений в Android, и вам нужна среда, которая соответствует потребностям вашего приложения. Если вы хотите, чтобы местоположение сохранялось (чтобы уменьшить использование GPS), то вы можете сохранить местоположение в настройках и / или включить отправку сетевого местоположения (не так точно, но обычно быстрее). Для некоторых приложений вы можете быстро выбрать приблизительное местоположение (с помощью последнего известного поставщика или поставщика сетевых расположений) и затем обновить его, когда появится точное местоположение GPS. Но подход, который вы используете, зависит от приложения.