private LocationManager mLocManager; public boolean getLocation() { mLocManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); // Exceptions will be thrown if provider is not permitted. boolean gpsEnabled = false, networkEnabled = false; try { gpsEnabled = mLocManager.isProviderEnabled(LocationManager.GPS_PROVIDER); networkEnabled = mLocManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER); } catch (Exception ex) { Toast.makeText(this, "Some error occurred", Toast.LENGTH_SHORT).show(); return false; } if (gpsEnabled) mLocManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, mLocListener); if (networkEnabled) mLocManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, mLocListener); else // Otherwise check last known location getLastKnownLocation(); return true; } public void getLastKnownLocation() { mLocManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE); Location location = null; boolean networkEnabled = mLocManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER); if (networkEnabled) location = mLocManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER); if (location != null) { LatLng myLocation = new LatLng(location.getLatitude(), location.getLongitude()); mGoogleMap.addMarker(new MarkerOptions().position(myLocation).title("Here I am!")); moveToLocation(myLocation, 10, 2000); } else Toast.makeText(this, "Sorry, cannot determine your current location.", Toast.LENGTH_LONG).show(); } LocationListener mLocListener = new LocationListener() { public void onLocationChanged(Location location) { LatLng myLocation = new LatLng(location.getLatitude(), location.getLongitude()); mGoogleMap.addMarker(new MarkerOptions().position(myLocation).title("Here I am!")); moveToLocation(myLocation, 10, 2000); // Preventing repetitive calls to onLocationChanged. mLocManager.removeUpdates(this); mLocManager.removeUpdates(mLocListener); } @Override public void onProviderDisabled(String provider) { } @Override public void onProviderEnabled(String provider) { } @Override public void onStatusChanged(String provider, int status, Bundle extras) { } };