Bharani Mani
- Forum posts: 1
Jul 18, 2017, 10:48:44 PM via Website
Jul 18, 2017 10:48:44 PM via Website
Hi,
I have an app that gets location updates in background service. I never get location updates on real phone. I call init() from backgrounservice's onCreate(), onConnected() is successfully called, I see requestLocationUpdates() returns success. But after that I never receive onReceive() in my BroadcastReceiver class. I am calling PendingIntent.getService() instead of getBroadCast() as mine is a background service. GPS is enabled on my real phone. Not sure what else is wrong.
public void init(Context context) {
try {
this.context = context;
geoCoder = new Geocoder(context, Locale.getDefault());
addressFragments = new ArrayList<String>();
googleApiClient = new GoogleApiClient.Builder(context)
.addApi(LocationServices.API)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.build();
locationRequest = new LocationRequest();
locationRequest.setInterval(INTERVAL);
locationRequest.setFastestInterval(FAST_INTERVAL);
//PRIORITY_BALANCED_POWER_ACCURACY
locationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
googleApiClient.connect();
} catch (Exception ex) {
Log.i("LocationClient", "init(): " + ex.getMessage());
}
}
public void onConnected(@Nullable Bundle bundle) {
if (ActivityCompat.checkSelfPermission(this.context, android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this.context,
android.Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
// TODO: Consider calling
// ActivityCompat#requestPermissions
// here to request the missing permissions, and then overriding
// public void onRequestPermissionsResult(int requestCode, String[] permissions,
// int[] grantResults)
// to handle the case where the user grants the permission. See the documentation
// for ActivityCompat#requestPermissions for more details.
return;
}
Intent mIntent = new Intent(context, LocationReceiver.class);
//mPendingIntent = PendingIntent.getBroadcast(context, 1011, mIntent, PendingIntent.FLAG_CANCEL_CURRENT);
mPendingIntent = PendingIntent.getService(context, 1011, mIntent, PendingIntent.FLAG_CANCEL_CURRENT);
PendingResult<Status> status = FusedLocationApi.requestLocationUpdates(googleApiClient,
locationRequest, mPendingIntent);
Location location = FusedLocationApi.getLastLocation(googleApiClient);
}
public class LocationReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (LocationResult.hasResult(intent)) {
LocationResult locationResult = LocationResult.extractResult(intent);
Location location = locationResult.getLastLocation();
if (location != null) {
// use the Location
latitude = location.getLatitude();
longitude = location.getLongitude();
}
}
}
}
Recommended editorial content
With your consent, external content is loaded here.
By clicking on the button above, you agree that external content may be displayed to you. Personal data may be transmitted to third-party providers in the process. You can find more information about this in our Privacy Policy.