The documentation that Google provides for their Fused Location Provider API says that, "The fused location provider manages the underlying location technologies, such as GPS and Wi-Fi, and provides a simple API that you can use to specify the required quality of service."
Looking at the source for FusedLocationProvider, I can see that it makes use of GPS and Network (which is presumably Wi-Fi and cell). However, that source hasn't changed since 2012.
Do Android devices ever use other sources of location data like the magnetometer in FusedLocationProvider implementations?
Related
I read in this document the following [...]"Google introduced its Fused Location
Provider (FLP) [42]; however, these techniques depend on Wi-Fi for fine-grained results, which is not always available."
source: www.mdpi.com/1424-8220/15/9/22060/pdf
From what I understand, high accuracy using fused location provider requires wifi but what about when it's not available? does it not work at all or does it provide less accurate results than when wifi is on ? And if it does work then does it automatically switch from fine location to coarse location?
FusedLocation provider does work without wifi but keeping Wifi in ON state makes it more accurate. I have used it one of my apps which does not require Wifi.
It seems to be a silly question but it might affect the design of application that I m developing .
Fused location providers provides location data in onLocationChanged () callback only when device gps is turned on. So i m confused what's the benefit of using fused location provider if It has such a dependency on device gps ?
Please help to explain
Thanks
What's the benefit of using fused location provider if it has such a dependency on device gps ?
The FusedLocationProvider may or may not use GPS, depending on the accuracy and update interval that you request. The main benefit is that the FusedLocationProvider conveniently abstracts the process of choosing suitable providers (WiFi, GPS, Network, BLE) and fusing the location info from those providers, hence the name.
The best choice of providers can depend on both the capabilities of the client device as well as your physical surroundings (e.g. WiFi might perform better than GPS in an urban environment with lots of tall buildings, while out in the wilderness it will be the other way round). So unless you need fine-grained control of the location providers I would suggest letting the FusedLocationProvider / the Google API decide.
Regarding application design: I have written a utility class, called the LocationAssistant, which will actually handle most of the setup for you. You might find it useful, as you're left with only a few simple interface methods to implement.
Here Google says:
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.
Can anyone explain to me why(if I) need to switch to the new APIs?
I think that the core difference is that FusedLocationProvider use the both physical sensor and google play service, where as other (location manger /location listner) use physical senors like gps and network.
FusedLocationProvider
FusedLocationProvider uses a combination of hardware and google play service, to found the context(location) of the request.
Pros:
It provides better accuracy with less battery drain, as it switches between gps and WiFi based location.
optimized transparently to you.Avoid heavy processing by using cache of location.if user has many location aware apps than it will not waste time and resources for waiting to get new location and use the previous location.
Google Play Services 3.2 includes several enhancements to the Location Based Services. The Fused Location Provider now supports the selection of a low-power mode option when requesting location updates, and the ability to inject mock locations — allowing you to more efficiently test your apps in a variety of simulated conditions.blog
When desiring to save battery power, and using coarse updates, the FLP doesn’t use Global Positioning Services (GPS), and instead uses WiFi and Cell tower signals.
Fused API provides 3 location providers.
HIGH_ACCURACY mode use all location providers
BALANCED_POWER mode exclude gps
NO_POWER mode use location from other apps
Cons
Location manger , use gps although it takes battery yet its work great without network.
Indoor accuracy is still a question mark , as if your using apps in indoor its accuracy is not good.
location manager is slow but accurate with gps , its a trade-off between accuracy and battery consumption.
If you plan to release it on Amazon, F-Droid or anything other then the Play Store, use the LocationListener or implement both. There are quite a few people who don't want Google to track their every move
To me the more accurate is Location Manager as it use in all platforms no need of google play store. but it takes some time and location detection speed depends on some factors such as you are on open place or not , weather etc
Related Material
we are developing an application in android which uses cellular(GSM) network location service (NOT GPS).Drains battery very fast when we use this location service in our application...
I dont know what causes this draining .. any pitfalls, suggestions?
thanks for help
Instead of requiring the location every time you have to request the Last Known Location.
Get the Last Known Location
check:
Fused Location Provider
use the fused location provider to retrieve the device's last known
location. The fused location provider is one of the location APIs in
Google Play services. It manages the underlying location technology
and provides a simple API so that you can specify requirements at a
high level, like high accuracy or low power. It also optimizes the
device's use of battery power.
Read more:
Adjusting the model to save battery and data exchange
I would like to get the latitude and longitude of a device, if the GPS is off, well hopefully can be a precise location
You should use the new LocationClient that is part of Google Play Services Location API. It uses a fused provider that automatically determines what is the best provider available at that moment. It also uses other sensors to get a more accurate location.
you can get your location from three techniques and each one called Provider and each one has some pros and drawback and uses you don't care about it Google play services will making it for you but you need to have good understand of that , the three ways is
from GPS , Network , SIM(mobile device with sim)
and here some implementations of the techniques
http://developer.android.com/guide/topics/location/strategies.html