Android find location java

How to Get Current Location in Android Using Location Manager

In this GPS tutorial you will learn how to get current location in android.

LocationManager class provides the facility to get latitude and longitude coordinates of current location. The class in which you want to get location should implement LocationListener and override all its abstract methods.

How to Get Current Location in Android Using Location Manager

Add following permissions to AndroidManifest.xml file.

Following lines of code helps in getting current location.

In requestLocationUpdates() method the 2nd argument is time in milliseconds and 3rd argument is distance in meters. Here I have used 5000 and 5 that means after every 5 seconds and 5 meter the current location is fetched.

To get coordinates use getLatitude() and getLongitude() method on variable of Location class.

Whenever location is changed it can be fetched inside onLocationChanged() method.

Below is simple application that fetches current location on button click and displays it in textview.

Full Source Code

activity_main.xml

AndroidManifest.xml

MainActivity.java

locationText . setText ( «Current Location: » + location . getLatitude ( ) + «, » + location . getLongitude ( ) ) ;

Toast . makeText ( MainActivity . this , «Please Enable GPS and Internet» , Toast . LENGTH_SHORT ) . show ( ) ;

Comment below if found anything incorrect or have doubts related to above android gps tutorial to get current location.

How to Make a Calculator App for Android

How to Connect Android Studio to Bluestacks

Simple Notepad App Android Example

Introduction to Android Programming

27 thoughts on “How to Get Current Location in Android Using Location Manager”

I’m studying 2nd yr cs engineering . will yu plz give some idea to do mini project in c,c++…..

locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this);
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, this);

it works if you add NETWORK_PROVIDER

Hi,
When i click the buton it show nothing lang and lat…but i add Toast between this,
Toast.makeText(getApplicationContext(), “Your Location”, Toast.LENGTH_LONG).show();
getLocation();
Toast.makeText(getApplicationContext(), “Your Location showing”, Toast.LENGTH_LONG).show();

But,Am able to find long and lat.
Advance Thanks

Hi
how do you solve it please ,i add Toast but nothing change

plz tell us where we needed to insert these toast..we are unable to do correct thsi

after clicking button it is not displaying any location

Makes sure the gps is one, test it in real android device.

I am running the tutorial code on a real device and gps is on but onLocationChanged is never called. I was wondering what version of the sdk you are running?

if(checkLocationPermission()) locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);

locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this);
Location location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
Log.e(“Current Location”,”lat: “+location.getLatitude()+” Lon: “+location.getLongitude());

this code is properly work.nycccc and easy code for get loacation.thank you

your code is not working
just button is getting displayed
when i clicked on that button,nothing got displayed

how to get current location not like above.. means current location place name should be displayed

I am running the tutorial code on a real device and gps is on but onLocationChanged is never called.

For this to work on my phone(Nougat). I needed to go to Settings, Location Services, App-Level Permission. My newly deployed app appeared in the list. I needed toggle the on button.
Then go back to your app, press the button, wait a few seconds and the location appears

Читайте также:  Подвал

thanx man.
.
.
your comment is really helpful

Thank you. This works. The problem at the above code is they are not asking for permission. You must give the permission manually.

your code is not working
just button is getting displayed
when i clicked on that button (GET CURRENT LOCATION),nothing got displayed, i have already GPS on

In above code you displaying the current location of your.,
But what if we want to find the location of other…
can you code for that.

Many Thanks sir,
It is working fine…We have to add device permission dynamically for latest versions of android…

Hi how to give device pemission. me too working on this code.. please help me.

Hi thank you for sharing. i need to get current location. but i click button i didn’t get any values.
am trying 1 week but i can’t get any code. please help me.

Hi, this code works accurately fine. This was not working on emulator. I installed this app in my mobile device and still it was not working. Then as Matt suggested above, I went to Settings of my mobile and typed Permissions in search box to access Permission Settings. There I opened App Permissions options and in App Permissions options I opened Your Location Permissions. There I saw all installed Apps of my device. I just turned on Your Location Permission for this app. Then I turned on GPS and ran the app. It worked.
Also be careful about package name while pasting the above code in your code.
Regards,

Источник

Android Location API to track your current location

Android Location API to track your current location

While we believe that this content benefits our community, we have not yet thoroughly reviewed it. If you have any suggestions for improvements, please let us know by clicking the “report an issue“ button at the bottom of the tutorial.

Android Location API can be used to track your mobile current location and show in the app. In this tutorial, we’ll develop an application that fetches the user’s current location programmatically.

Android Location API

  • android.location.LocationListener : This is a part of the Android API.
  • com.google.android.gms.location.LocationListener : This is present in the Google Play Services API. (We’ll look into this in the next tutorial)

Android Location Services is available since Android API 1. Google officially recommends using Google Play Location Service APIs. Android Location Services API is still used to develop location-based apps for devices that don’t support Google Play Services.

LocationListener

The LocationListener interface, which is part of the Android Locations API is used for receiving notifications from the LocationManager when the location has changed. The LocationManager class provides access to the systems location services. The LocationListener class needs to implement the following methods.

  • onLocationChanged(Location location) : Called when the location has changed.
  • onProviderDisabled(String provider) : Called when the provider is disabled by the user.
  • onProviderEnabled(String provider) : Called when the provider is enabled by the user.
  • onStatusChanged(String provider, int status, Bundle extras) : Called when the provider status changes.

The android.location has two means of acquiring location data:

  • LocationManager.GPS_PROVIDER: Determines location using satellites. Depending on the conditions, this provider may take a while to return a location fix
  • LocationManager.NETWORK_PROVIDER: Determines location based on the availability of nearby cell towers and WiFi access points. This is faster than GPS_PROVIDER
Читайте также:  Бот для whatsapp php

In this tutorial, we’ll create a Service that implements the LocationListener class to receive periodic location updates via GPS Providers or Network Providers.

Android Location API Project Structure

android location api, android gps location

The project consists of a MainActivity.java class which displays a Get Location and a LocationTrack.java Service class.

Android Location APICode

The activity_main.xml layout is defined below.

The MainActivity.java class is defined below.

package com.journaldev.gpslocationtracking; import android.annotation.TargetApi; import android.content.DialogInterface; import android.content.pm.PackageManager; import android.os.Build; import android.support.v7.app.AlertDialog; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.Toast; import java.util.ArrayList; import static android.Manifest.permission.ACCESS_COARSE_LOCATION; import static android.Manifest.permission.ACCESS_FINE_LOCATION; public class MainActivity extends AppCompatActivity < private ArrayList permissionsToRequest; private ArrayList permissionsRejected = new ArrayList(); private ArrayList permissions = new ArrayList(); private final static int ALL_PERMISSIONS_RESULT = 101; LocationTrack locationTrack; @Override protected void onCreate(Bundle savedInstanceState) < super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); permissions.add(ACCESS_FINE_LOCATION); permissions.add(ACCESS_COARSE_LOCATION); permissionsToRequest = findUnAskedPermissions(permissions); //get the permissions we have asked for before but are not granted.. //we will store this in a global list to access later. if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) < if (permissionsToRequest.size() >0) requestPermissions(permissionsToRequest.toArray(new String[permissionsToRequest.size()]), ALL_PERMISSIONS_RESULT); > Button btn = (Button) findViewById(R.id.btn); btn.setOnClickListener(new View.OnClickListener() < @Override public void onClick(View view) < locationTrack = new LocationTrack(MainActivity.this); if (locationTrack.canGetLocation()) < double longitude = locationTrack.getLongitude(); double latitude = locationTrack.getLatitude(); Toast.makeText(getApplicationContext(), "Longitude:" + Double.toString(longitude) + "\nLatitude:" + Double.toString(latitude), Toast.LENGTH_SHORT).show(); >else < locationTrack.showSettingsAlert(); >> >); > private ArrayList findUnAskedPermissions(ArrayList wanted) < ArrayList result = new ArrayList(); for (String perm : wanted) < if (!hasPermission(perm)) < result.add(perm); >> return result; > private boolean hasPermission(String permission) < if (canMakeSmores()) < if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) < return (checkSelfPermission(permission) == PackageManager.PERMISSION_GRANTED); >> return true; > private boolean canMakeSmores() < return (Build.VERSION.SDK_INT >Build.VERSION_CODES.LOLLIPOP_MR1); > @TargetApi(Build.VERSION_CODES.M) @Override public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) < switch (requestCode) < case ALL_PERMISSIONS_RESULT: for (String perms : permissionsToRequest) < if (!hasPermission(perms)) < permissionsRejected.add(perms); >> if (permissionsRejected.size() > 0) < if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) < if (shouldShowRequestPermissionRationale(permissionsRejected.get(0))) < showMessageOKCancel("These permissions are mandatory for the application. Please allow access.", new DialogInterface.OnClickListener() < @Override public void onClick(DialogInterface dialog, int which) < if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) < requestPermissions(permissionsRejected.toArray(new String[permissionsRejected.size()]), ALL_PERMISSIONS_RESULT); >> >); return; > > > break; > > private void showMessageOKCancel(String message, DialogInterface.OnClickListener okListener) < new AlertDialog.Builder(MainActivity.this) .setMessage(message) .setPositiveButton("OK", okListener) .setNegativeButton("Cancel", null) .create() .show(); >@Override protected void onDestroy() < super.onDestroy(); locationTrack.stopListener(); >> 

In the above code, we’re implementing runtime permissions that are used in Android 6.0+ devices. We’ve added the ACCESS_FINE_LOCATION and ACCESS_COARSE_LOCATION permissions in the AndroidManifest.xml file. Clicking the button invokes the LocationTrack.java service class. If the location returned is NULL in the case of GPS Provider, we call the showSettingsAlert() method from the LocationTrack.java class that we’ll be seeing shortly. When the activity is destroyed stopLocationTrack() method is called to turn off the location updates. The LocationTrack.java class is defined below.

public class LocationTrack extends Service implements LocationListener < private final Context mContext; boolean checkGPS = false; boolean checkNetwork = false; boolean canGetLocation = false; Location loc; double latitude; double longitude; private static final long MIN_DISTANCE_CHANGE_FOR_UPDATES = 10; private static final long MIN_TIME_BW_UPDATES = 1000 * 60 * 1; protected LocationManager locationManager; public LocationTrack(Context mContext) < this.mContext = mContext; getLocation(); >private Location getLocation() < try < locationManager = (LocationManager) mContext .getSystemService(LOCATION_SERVICE); // get GPS status checkGPS = locationManager .isProviderEnabled(LocationManager.GPS_PROVIDER); // get network provider status checkNetwork = locationManager .isProviderEnabled(LocationManager.NETWORK_PROVIDER); if (!checkGPS && !checkNetwork) < Toast.makeText(mContext, "No Service Provider is available", Toast.LENGTH_SHORT).show(); >else < this.canGetLocation = true; // if GPS Enabled get lat/long using GPS Services if (checkGPS) < if (ActivityCompat.checkSelfPermission(mContext, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(mContext, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) < // TODO: Consider calling // ActivityCompat#requestPermissions // here to request the missing permissions, and then overriding // public void onRequestPermissionsResult(int requestCode, String[] permissions, // int[] grantResults) // to handle the case where the user grants the permission. See the documentation // for ActivityCompat#requestPermissions for more details. >locationManager.requestLocationUpdates( LocationManager.GPS_PROVIDER, MIN_TIME_BW_UPDATES, MIN_DISTANCE_CHANGE_FOR_UPDATES, this); if (locationManager != null) < loc = locationManager .getLastKnownLocation(LocationManager.GPS_PROVIDER); if (loc != null) < latitude = loc.getLatitude(); longitude = loc.getLongitude(); >> > /*if (checkNetwork) < if (ActivityCompat.checkSelfPermission(mContext, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(mContext, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) < // TODO: Consider calling // ActivityCompat#requestPermissions // here to request the missing permissions, and then overriding // public void onRequestPermissionsResult(int requestCode, String[] permissions, // int[] grantResults) // to handle the case where the user grants the permission. See the documentation // for ActivityCompat#requestPermissions for more details. >locationManager.requestLocationUpdates( LocationManager.NETWORK_PROVIDER, MIN_TIME_BW_UPDATES, MIN_DISTANCE_CHANGE_FOR_UPDATES, this); if (locationManager != null) < loc = locationManager .getLastKnownLocation(LocationManager.NETWORK_PROVIDER); >if (loc != null) < latitude = loc.getLatitude(); longitude = loc.getLongitude(); >>*/ > > catch (Exception e) < e.printStackTrace(); >return loc; > public double getLongitude() < if (loc != null) < longitude = loc.getLongitude(); >return longitude; > public double getLatitude() < if (loc != null) < latitude = loc.getLatitude(); >return latitude; > public boolean canGetLocation() < return this.canGetLocation; >public void showSettingsAlert() < AlertDialog.Builder alertDialog = new AlertDialog.Builder(mContext); alertDialog.setTitle("GPS is not Enabled!"); alertDialog.setMessage("Do you want to turn on GPS?"); alertDialog.setPositiveButton("Yes", new DialogInterface.OnClickListener() < public void onClick(DialogInterface dialog, int which) < Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS); mContext.startActivity(intent); >>); alertDialog.setNegativeButton("No", new DialogInterface.OnClickListener() < public void onClick(DialogInterface dialog, int which) < dialog.cancel(); >>); alertDialog.show(); > public void stopListener() < if (locationManager != null) < if (ActivityCompat.checkSelfPermission(mContext, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(mContext, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) < // TODO: Consider calling // ActivityCompat#requestPermissions // here to request the missing permissions, and then overriding // public void onRequestPermissionsResult(int requestCode, String[] permissions, // int[] grantResults) // to handle the case where the user grants the permission. See the documentation // for ActivityCompat#requestPermissions for more details. return; >locationManager.removeUpdates(LocationTrack.this); > > @Override public IBinder onBind(Intent intent) < return null; >@Override public void onLocationChanged(Location location) < >@Override public void onStatusChanged(String s, int i, Bundle bundle) < >@Override public void onProviderEnabled(String s) < >@Override public void onProviderDisabled(String s) < >> 

Few inferences drawn from the above code are:

  • In the above code isProviderEnabled(String provider) is called upon the locationManager object and is used to check whether GPS/Network Provider is enabled or not.
  • If the Providers aren’t enabled we’re calling the method showSettingsAlert() that shows a prompt to enable GPS.
  • requestLocationUpdates(String provider, long minTime, float minDistance, LocationListener listener) method of the LocationManager class is used to register the current activity to be notified periodically by the named provider.
  • onLocationChanged is invoked periodically based upon the minTime and minDistance, whichever comes first.
  • Location class hosts the latitude and longitude. To get the current location the following code snippet is used.
Location loc = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER); 

The output of the above application in action on an emulator is: Our emulators can’t fetch locations, hence it’s returning 0.0 for lat/lng. You can connect your smartphone and run the application in debug mode to check your current location. To emulate GPS Locations in an emulator we can pass fixed Latitude and Longitude values from Android Studio. Besides the emulator window, you can see a list of options. The one at the bottom (which has three dots) is our Extended Controls options. Open that and send a dummy location. Your application should look like this: This brings an end to this tutorial. We’ll be implementing Location API using Google Play Services in a later tutorial. You can download the Android GPSLocationTracking Project from the link below.

Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.

Источник

Оцените статью