Причина, по которой ваш код не работает, в том, что вы указали следующие критерии:
criteria.setAccuracy(Criteria.NO_REQUIREMENT);
Android предпочтет использовать сетевое местоположение по GPS, потому что вас не заботит точность. Если указать точность около 20 метров, он, вероятно, автоматически вызовет GPS.
Чтобы вручную вызывать обновления местоположения GPS, переопределите bestProvider
:
bestProvider = LocationManager.GPS_PROVIDER;
Вы действительно можете упростить это до двух строк кода:
LocationManager locationManager =
(LocationManager) getSystemService(Context.LOCATION_SERVICE);
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, interval,
precision, listener);
Не забудьте отменить регистрацию слушателя:
locationManager.removeUpdates(listener);