Android location updates in einem Service

Möchte ich etwas wie das hier tun:

  • Wenn meine Anwendung gestartet wird möchte ich einen Dienst starten, der sollte überprüfen, meine Lage

  • Wenn die Anwendung geht in den hintergrund ich möchte, um den Dienst zu beenden

Habe ich zwei große Probleme:

  1. Wie kann ich erkennen, dass mein Antrag geht in den hintergrund? Ich haver mehrere Aktivitäten, und ich habe versucht, in meiner MainActivity überschreiben onPause, aber der onPause wird auch aufgerufen, wenn ich starten Sie eine andere Tätigkeit.

  2. Dieses problem ist wichtiger: Wie sollte ich meinen Dienst, welche Prüfungen für meine Lage Aussehen? Ich habe versucht, mehrere Ansätze, aber kein Erfolg.

Mein Service sieht so aus und es funktioniert nicht. Was sollte ich ändern damit es funktioniert?

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 () - Methode, lassen Sie den Dienst suchen Informationen zum Standort und onPause () - Methode entfernen Sie die Lage.
  • Ich will meine Position in mehreren Aktivitäten, nicht nur in der Haupt-Aktivität. Also wäre es nicht klug sein, um den Dienst zu beenden in onPause, denn wenn eine andere activity kommt nach vorne, onPause wird aufgerufen, und ich würde halt immer die location updates.
  • android.die Genehmigung.ACCESS_COARSE_LOCATION android.die Genehmigung.ACCESS_FINE_LOCATION android.die Genehmigung.ACCESS_NETWORK_STATE haben Sie diese Erlaubnis in Ihrer manifest-Datei ?
InformationsquelleAutor ffddani | 2013-02-25
Schreibe einen Kommentar