Foreground Service Not Receiving Location Updates In Android 7.0+ When Screen Is Off
Solution 1:
I've spent the past week trying to get Location Services in Foreground. Finally got it working by including this in the manifest.
android:foregroundServiceType="location"
I hope this can help someone in the future!
Solution 2:
I had the same issue and I have found a working solution. In order to listen to location updates, you should NOT call this method:
public Task<Void> requestLocationUpdates(LocationRequest request,
LocationCallback callback, Looper looper)
You should use a pending intent instead of a callback, i.e. you should call the method:
public Task<Void> requestLocationUpdates(LocationRequest request,
PendingIntent callbackIntent)
Checkout the link to read more: https://developers.google.com/android/reference/com/google/android/gms/location/FusedLocationProviderClient.html#requestLocationUpdates(com.google.android.gms.location.LocationRequest, android.app.PendingIntent)
Solution 3:
LocationServices.FusedLocationApi is deprecated.
I just refactored my App as follows. Hope it helps:
This is what I am calling in the onCreate-Method of my Service:
publicvoidstart(Context ctx) {
FusedLocationProviderClientclient= LocationServices
.getFusedLocationProviderClient(ctx);
//Define quality of service:LocationRequestrequest= LocationRequest.create();
request.setInterval(1000); //Every second
request.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
if (locCallback != null) {
client.removeLocationUpdates(locCallback);
}
locCallback = createNewLocationCallback();
client.requestLocationUpdates(request, locCallback, null);
}
And this is the method for creating the Callback:
private LocationCallback createNewLocationCallback() {
LocationCallbacklocationCallback=newLocationCallback() {
@OverridepublicvoidonLocationResult(LocationResult result) {
Locationloc= result.getLastLocation();
// Do something with the location (may be null!)
}
};
return locationCallback;
}
Guess, I also found that somewhere as example, but did not keep the reference.
I do not have Oreo on my own. But some testers confirmed, that it works.
To keep the service in foreground, I am just calling "startForeground" afterwards in the onCreate method of my service.
Solution 4:
I had been experiencing this issue on emulated devices running 7.0 and 8.0 and consistently the location callback was not being triggered when the screen was off (cmd+P). I was finally able to get my hands on a real 7.0 device (Galaxy S7) and I was not able to replicate the issue. Sorry if I wasted anyone's time, apparently it is an emulator issue.
Solution 5:
one solution might be this :
check if location is not received in 2 minutes stop/start whole start location update again . although foreground service must have solve the problem
Post a Comment for "Foreground Service Not Receiving Location Updates In Android 7.0+ When Screen Is Off"