Skip to content

Latest commit

 

History

History
100 lines (75 loc) · 3.83 KB

README.md

File metadata and controls

100 lines (75 loc) · 3.83 KB

LocationHelper

This is a sample Android application to show how to track user's location and manage the updates

ScreenShot

Getting current location through FusedLocationAPI provided by Google is a bit tricky to implement, but the below step-by-step guidelines will explain the procedure.

  1. First, you need to add the needed dependency in your build.gradle file.
     compile 'com.google.android.gms:play-services-location:10.+’
  1. Then add the following permissions into the AndroidManifest.xml file.
     <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
     <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
  1. Next is permission check, From Android 6.0 user can deny the permission request, so before try to get the location we need to check the status of the location access. For this use PermissionUtil class.

  2. For making a connection with Location API, need to create an instance of GoogleApiCLient.

    GoogleApiClient mGoogleApiClient;

    mGoogleApiClient = new GoogleApiClient.Builder(this)
                           .addConnectionCallbacks(this)
                           .addOnConnectionFailedListener(this)
                           .addApi(LocationServices.API).build();

    mGoogleApiClient.connect();
  1. At next implement the OnConnectionFailedListener and ConnectionCallbacks for managing the GoogleApiclient connection.
    public class MyLocationUsingLocationAPI extends AppCompatActivity implements ConnectionCallbacks,
    OnConnectionFailedListener,OnRequestPermissionsResultCallback,                  
    {

      @Override
      public void onConnectionFailed(ConnectionResult result) {
         Log.i(TAG, "Connection failed: ConnectionResult.getErrorCode() = "+ result.getErrorCode());
      }

      @Override
      public void onConnected(Bundle arg0) {
        // Once connected with google api, get the location
      }

      @Override
      public void onConnectionSuspended(int arg0) {
          mGoogleApiClient.connect();
      }
    }
  1. For refreshing the location of the device at regular intervals, use LocationRequest objects.
    LocationRequest mLocationRequest = new LocationRequest();
    mLocationRequest.setInterval(10000);
    mLocationRequest.setFastestInterval(5000);
    mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);

    LocationSettingsRequest.Builder builder = new LocationSettingsRequest.Builder()
                                              .addLocationRequest(mLocationRequest);
  1. Then check the google play service availability, if available get the last known location of the user's device from the Location service as follows.
     mLastLocation = LocationServices.FusedLocationApi
                        .getLastLocation(mGoogleApiClient);
  1. Using the Geocoder class you can get the address from the above location.
     public Address getAddress(double latitude,double longitude)
     {
         Geocoder geocoder;
         List addresses;
         geocoder = new Geocoder(this, Locale.getDefault());

         try 
         {
             // Here 1 represent max location result to returned, by documents it recommended 1 to 5
             addresses = geocoder.getFromLocation(latitude,longitude, 1); 
             return addresses.get(0);
          } catch (IOException e) {
             e.printStackTrace();
          }
        return null;
      }

For more information, check out my detailed guide here : http://droidmentor.com/get-the-current-location-in-android/