2

I have a service which receives locations through registering a LocationManager.requestLocationUpdates. But there have been some issues on some phones.

When battery runs low, the network location provider stops sending location fixes (this problem is addressed in this SO question). It's not a only a problem with my app but also the other apps just stop receiving locations. Even when the phone is recharged the problem persists until the full reboot.

However, I found out (and someone also mentioned it in the SO question above) that Google Maps still keeps receiving location updates - when I open Google Maps app it shows the correct location and updates.

So I was thinking about a workaround of using locations from Google Maps API. I have absolutely no experience with the Maps API, but it seems that it needs a proper GUI (Activity) application to be used with. Or am I wrong? Is there a possibility to use Google Maps API to receive locations even within the Service?

Community
  • 1
  • 1
NumberFour
  • 3,551
  • 8
  • 48
  • 72
  • Regarding the LocationManager not working in a low power situation have you tried using the new fused location provider? (A quick [guide](https://developer.android.com/training/location/retrieve-current.html) to setting it up). I only wonder as the LocationManager you have to set power criteria and so on, while the Play services FusedLocationProvider will get the closest required fix using a combination of network and GPS, taking power and so on into account. – marcus.ramsden Jul 19 '13 at 12:53
  • Thanks, I'll take a look at it... I'm wondering if Google Maps uses a thing like this rather than `LocationManager` – NumberFour Jul 20 '13 at 08:06
  • I finally found the time to test this. And YES, it seems to work great even in low-power conditions. I think this solved my problem. Please consider to write this as an answer so I can accept it. Thanks a lot for this hint! – NumberFour Jul 30 '13 at 21:28
  • linking related questions http://stackoverflow.com/questions/13594932/network-provider-not-providing-updated-locations http://stackoverflow.com/questions/15747543/locationlistener-of-network-provider-is-enabled-but-onlocationchanged-is-never http://stackoverflow.com/questions/17734904/using-google-maps-location-without-activity http://stackoverflow.com/questions/16013601/network-location-provider-not-giving-location-android http://stackoverflow.com/questions/17169143/android-location-listener-in-service-does-not-work-until-i-reopen-wifi-mobile-ne – Richard Le Mesurier Feb 18 '14 at 17:15
  • In your first link my answer is already the most upvoted one :) But anyways, thanks for leaving the comment. – NumberFour Feb 18 '14 at 21:39

1 Answers1

3

Given some extensive testing from a reliable source, I believe that you might want to consider using the FusedLocationProvider supplied with Google Play Services. It seems to take the headache out of choosing the appropriate power criteria and so on.

Be aware that this will require that the user must have Google Play installed on their device, so Kindles and the like will be out of the picture. It also requires a minimum of Android 2.2.

Some more information about the location services provided by Google Play Services can be found here.

marcus.ramsden
  • 2,633
  • 1
  • 22
  • 33