Before creating this service if you have requesting location update on the other part of your app, make sure you call removeLocationUpdate(). So the service can get the right location update.
LocationServices.FusedLocationApi.removeLocationUpdates(googleApiClient, context);
public class LocationTrackingService extends Service implements LocationListener, GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener{ protected GoogleApiClient googleApiClient; @Override public void onCreate() { } @Override public int onStartCommand(Intent intent, int flags, int startId) { if(googleApiClient != null && !googleApiClient.isConnected()) googleApiClient.connect(); else if(googleApiClient == null) { createGoogleApiClient(); } return START_STICKY; } @Override public IBinder onBind(Intent intent) { return null; } @Override public void onDestroy() { super.onDestroy(); LocationServices.FusedLocationApi.removeLocationUpdates(googleApiClient, this); googleApiClient.disconnect(); } @Override public void onLocationChanged(Location location) { Log.d("LOCATION CHANGED", "onLocationChanged: "+ location.toString()); } @Override public void onConnected(Bundle bundle) { LocationRequest locRequest = new LocationRequest(); locRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY); locRequest.setInterval(60000*15); // update location every 15 minutes locRequest.setFastestInterval(60000*5); // set fastest for 5 minutes locRequest.setSmallestDisplacement(10); startLocationUpdate(locRequest); } @Override public void onConnectionSuspended(int i) { } @Override public void onConnectionFailed(ConnectionResult connectionResult) { } private void startLocationUpdate(LocationRequest locRequest){ // checkpermission for location access on Android 6.0 if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) { LocationServices.FusedLocationApi.requestLocationUpdates( googleApiClient, locRequest, this); } } private createGoogleApiClient(){ googleApiClient = new GoogleApiClient.Builder(this) .addConnectionCallbacks(this) .addOnConnectionFailedListener(this) .addApi(LocationServices.API) .build(); googleApiClient.connect(); } }
Comments
Post a Comment