Location:
In Android, to retrieve location, we need to use Google-based location APIs for Android.
To work with any Google-based APIs, we need to have Google play services as part of our project. It is available as the following dependency for location.
compile ‘com.google.android.gms:play-services-location:{version}’
Refer the below link to add Google Play services to project.
https://developers.google.com/android/guides/setup
If we are using Google Play services in our app, we need to check Google Play services in mobile is up-to-date or not.
Here, to retrieve location, we are using a library from the below link.
https://github.com/akhgupta/Android-EasyLocation
All the instructions to implement that library are available from the same link.
Location can be determined by using 2 double values. They are latitude and longitude. For every place, there are unique latitude and longitude values.
Ex: Hyderabad – 17.3850 , 78.4867
Also, we need permission for location must be enabled by the user.
The permission for location is either of the 2 following.
<uses-permission android:name=”android.permission.ACCESS_FINE_LOCATION” />
<uses-permission android:name=”android.permission.ACCESS_COARSE_LOCATION” />
also we need internet permission
<uses-permission android:name=”android.permission.INTERNET” />
Steps to implement above library:
1) Add dependencies for library and Google Play services
2) Extend our activity with EasyLocationAppCompatActivity and override methods
3) In onResume, write following code
LocationRequest locationRequest = new LocationRequest()
.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY)
.setInterval(5000)
.setFastestInterval(5000);
EasyLocationRequest easyLocationRequest = new EasyLocationRequestBuilder()
.setLocationRequest(locationRequest)
.setFallBackToLastLocationTime(3000)
.build();
To get location one time
requestSingleLocationFix(easyLocationRequest);
To get location continuously
requestLocationUpdates(easyLocationRequest);
Whenever we receive a location update, we have a overridden method called in our Activity. That is
@Override
public void onLocationReceived(Location location) {
double latitude = location.getLatitude();
double longitude = location.getLongitude();
}
Create an Application to work with the above given library to retrieve current location