BroadcastReceiver für den Standort

Ich weiß, dass BroadcastReceiver nach Text, Telefonereignissen usw. sucht. Aber können Sie LocationServices als Service und Ereignis basierend auf dem Standort ausführen?

Zum Beispiel sind Sie in der Nähe eines bestimmten GPS-Punktes und das Telefon benachrichtigt Sie.

   

    Ich denke, was Sie suchen, ist so etwas. Es gibt eine Version von LocationManager.requestLocationUpdates() , die einen PendingIntent als Parameter verwendet, und dieser Intent könnte zum PendingIntent eines BroadcastReceiver . Dieser Code registriert eine benutzerdefinierte Sendung, die mit den Standortaktualisierungen ausgetriggers wird.

     Intent intent = new Intent("UNIQUE_BROADCAST_ACTION_STRING_HERE"); LocationManager manager = (LocationManager)context.getSystemService(Context.LOCATION_SERVICE); long minTime; //This should probably be fairly long float minDistance; //This should probably be fairly big String provider; //GPS_PROVIDER or NETWORK_PROVIDER PendingIntent launchIntent = PendingIntent.getBroadcast(context, 0, intent, 0); manager.requestLocationUpdates(provider, minTime, minDistance, launchIntent); 

    Dann müssen Sie nur Ihren BroadcastReceiver mit derselben Intent-Aktion registrieren und er erhält die Standortaktualisierungen zur Verarbeitung. Und behalten Sie diesen PendingIntent natürlich bei sich, da Sie manager.removeUpdates(launchIntent) aufrufen manager.removeUpdates(launchIntent) !

    Letzter Hinweis:

    Da es sich so anhört, als würden Sie versuchen, regelmäßige Standortaktualisierungen zu implementieren, während Ihre App nicht im Vordergrund steht, denken Sie daran. Wenn Sie nicht möchten, dass Ihre App als Akku-Killer gebrandmarkt wird, achten Sie darauf, wie Sie diese functionalität implementieren.

    Sie möchten die Aktualisierung der Häufigkeit von Uploads entweder mit einem großen minTime- oder minDistance-Parameter stark reduzieren, damit der Location Service sich erholen kann. Diese function sollte auch an eine vom Nutzer festgelegte Voreinstellung angehängt sein, damit sie Ihre App vom Ort der Verfolgung im Hintergrund aus aktivieren / deaktivieren kann.

    Ich hoffe, das hilft!

    Diese Frage ist mehr als 2 Jahre alt, aber es gibt jetzt sehr, sehr einfach und Batterie effiziente Möglichkeit, dies zu tun. Das Konzept heißt Geofences . Sie können es unten genauer erfahren:

    http://developer.android.com/training/location/geofencing.html