Android emplacement des mises à jour dans un Service

Je veux faire quelque chose comme ceci:

  • Quand mon application démarre, je veux démarrer un Service qui doit vérifier ma position

  • Lorsque l'application va à fond, je veux arrêter le service

J'ai deux problèmes majeurs:

  1. Comment puis-je détecter que ma demande va à fond? Je haver plusieurs activités, et j'ai essayé dans mon MainActivity primordial onPause, mais le onPause est aussi appelé lorsque je démarre une autre activité.

  2. Ce problème est plus important: Comment mon Service qui vérifie pour mon emplacement? J'ai essayé plusieurs méthodes, mais sans succès.

Mon Service ressemble à ça, et ça ne fonctionne pas. Que dois-je modifier pour le faire fonctionner?

package com.pivoscore.service;
import android.app.Service;
import android.content.Context;
import android.content.Intent;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.os.IBinder;
public class LocationService extends Service {
private LocationListener locationListener;
@Override
public IBinder onBind(final Intent intent) {
return null;
}
@Override
public int onStartCommand(final Intent intent, final int flags, final int startId) {
super.onStartCommand(intent, flags, startId);
return Service.START_STICKY;
}
@Override
public void onCreate() {
super.onCreate();
final LocationManager locationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);
this.locationListener = new MyLocationListener();
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 100, 0, this.locationListener);
}
private static class MyLocationListener implements LocationListener {
@Override
public void onLocationChanged(final Location location) {
}
@Override
public void onProviderDisabled(final String provider) {
}
@Override
public void onProviderEnabled(final String provider) {
}
@Override
public void onStatusChanged(final String provider, final int status, final Bundle extras) {
}
}
}
onResume() la méthode, laissez-le service de Localisation de la recherche, de l'Information et de onPause() la méthode de suppression de l'Emplacement.
Je veux utiliser ma localisation dans plusieurs activités, non seulement dans l'activité principale. Donc, il ne serait pas sage d'arrêter le Service en onPause, parce que si une autre activité vient à l'avant, onPause sera appelé, et je voudrais cesser de se l'emplacement des mises à jour.
android.la permission.ACCESS_COARSE_LOCATION android.la permission.ACCESS_FINE_LOCATION android.la permission.ACCESS_NETWORK_STATE avez-vous ajouté ces Permission dans votre fichier de manifeste ?

OriginalL'auteur ffddani | 2013-02-25