Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Android's most accurate Location API

In order to work, my app requires a location API. I intend use the Mapbox platform to customize its design (since Google Maps does not provide this level of customization, as far as I am concerned).

Documentation says that we should use Google Play API when building location apps:

The Google Play services location APIs are preferred over the Android framework location APIs (android.location) as a way of adding location awareness to your app. If you are currently using the Android framework location APIs, you are strongly encouraged to switch to the Google Play services location APIs as soon as possible.

My question is: Is Google Play API the most efficient API when it comes to GPS accuracy? Or should I use the LocationManager and LocationListener way of doing it?

I need accuracy. Which one should I use? Thanks.

like image 967
AndroidDev Avatar asked Jul 25 '16 22:07

AndroidDev


People also ask

What API used for finding the location services?

The Google Location Services API, part of Google Play services, is the preferred way to add location-awareness to your app. It offers a simpler API, higher accuracy, low-power geofencing, and more. If you are currently using the android.

Which API is used for continuously obtain the device location?

Using the Google Play services location APIs, your app can request the last known location of the user's device. In most cases, you are interested in the user's current location, which is usually equivalent to the last known location of the device.


2 Answers

In android also there are three types of location :

  1. GPS_PROVIDER
  2. NETWORK_PROVIDER
  3. PASSIVE_PROVIDER

So, as per my coding experience I came to know that if you use :

locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 5000, 10, new MyLocationListener());

you will get precision upto 14+ decimal places.

But if you use fusion of them like this :

LocationServices.FusedLocationApi.requestLocationUpdates(mGoogleApiClient, mLocationRequest, my_google_listener);

you will get precision upto 6 to 7 decimal places. try it !!! reference

But note few things here that, GPS Provider takes time to fetch location while Google Location is much faster as it gets data from API call to its google server database.

GPS works offline while google provider gets the location via mobile or wifi data.

like image 179
Dharvik shah Avatar answered Sep 27 '22 19:09

Dharvik shah


Use FusedLocationProviderApi and set LocationRequest priority to PRIORITY_HIGH_ACCURACY

This is newest API for accurate location fetch and google suggest to use the same.

Check Accuracy details here.

Basically Google play services API has intelligence to get accurate location by fusing GPS+NetworkProvider+passive providers.

like image 20
NitZRobotKoder Avatar answered Sep 27 '22 18:09

NitZRobotKoder