Вот пример кода, который делает эту работу. Краткое описание: сначала вы получаете locationService для определения местоположения, а затем с помощью Criteria api вы позволяете системе выбирать лучшего поставщика в соответствии с вашими настройками в Criteria, затем вы получаете поставщика, запрашиваете обновления местоположения у поставщика и внедряете интерфейс LocationListener, также кешируется последнее местоположение, которое вы можете вызовите getLastKnownLocation, но я не буду рассчитывать, что это может привести к устаревшим или нулевым результатам
String contenxt = Context.LOCATION_SERVICE;
locationManager = (LocationManager) getSystemService(contenxt);
/*
* trying to get the best provider
* with given conditions
*/
Criteria criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_FINE);
criteria.setAltitudeRequired(false);
criteria.setCostAllowed(true);
criteria.setSpeedRequired(false);
criteria.setBearingRequired(false);
criteria.setPowerRequirement(Criteria.POWER_LOW);
String provider = locationManager.getBestProvider(criteria, true);
Log.d(GAL, provider);
locationManager.requestLocationUpdates(provider, 3000, 30, locationListener);
location = locationManager.getLastKnownLocation(provider);
Примечание: не забудьте реализовать Location Listener
Ответ на примечание: вы не включаете mapView с помощью findViewById (R.id.mapView), который уже включен в ваш xml и в ваш макет. Вы просто получаете ссылку на mapView для использования встроенных методов, таких как setZoom, animateTo и т. Д.