How to get current location in Android
To get the current location in Android, you can use the LocationManager
class and the LocationProvider
interface.
First, you will need to add the following permissions to your AndroidManifest.xml file:
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
Next, you can use the following code to get the current location in your activity:
import android.location.Location;
import android.location.LocationManager;
public class MainActivity extends AppCompatActivity {
private LocationManager locationManager;
private Location currentLocation;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
}
@Override
protected void onResume() {
super.onResume();
requestLocationUpdates();
}
@Override
protected void onPause() {
super.onPause();
removeLocationUpdates();
}
private void requestLocationUpdates() {
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED
&& ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
// Permission is not granted
// Request permission
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION}, 123);
return;
}
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, new LocationListener() {
@Override
public void onLocationChanged(Location location) {
// Location was changed
currentLocation = location;
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
// Status of the location provider