Was ist dein Problem? Ich habe dies in einem meiner letzten Projekt getan. Sie müssen in Ihrem Service einen GPS-Listener implementieren. Ich empfehle einen Broadcast für die Kommunikation zwischen Ihrem Dienst und Ihrer Aktivität. Wenn Sie einen Alarm wünschen, müssen Sie, wenn Ihre Aktivität in Sicht ist, Ihren Alarm in der Aktivität implementieren. Andernfalls müssen Sie einen pendingIntent in Ihrem Service erstellen und eine Benachrichtigung auslösen, wenn es Zeit für.
möglich onCreate in Ihren Diensten:
@Override
public void onCreate() {
myNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
myServiceBroadcastReceiver = new MyServiceBroadcastReceiver();
MyApplication.getAppContext().registerReceiver(myServiceBroadcastReceiver, new IntentFilter(MyApplication.APP_UPDATE_DEMAND));
myNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
myLocManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
myLocListener = new MyLocListener();
myLocManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, MyApplication.GPS_UPDATE_PERIOD, 0, myLocListener);
myLocManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, MyApplication.NETWORK_UPDATE_PERIOD, 0, myLocListener); // comment this line out if you want only gps!
}
Ihr Beispiel Location Klasse
private class MyLocListener implements LocationListener {
public void onLocationChanged(Location location) {
String lat = Double.toString(location.getLatitude());
String lng = Double.toString(location.getLongitude();
//evaluate lat and lng here, fire a notification or send a broadcast if the activity is in view.
}
}
public void onProviderDisabled(String provider) {
// Do something
}
public void onProviderEnabled(String provider) {
// Do something
}
public void onStatusChanged(String provider, int status,
Bundle extras) {
// Do something
}
}
Wenn Sie lat und lng im Dienst auswerten möchten (Aktivität ist nicht in Sicht) Sie können dies tun, in onLocationChanged() Wenn Sie Ihre GPS-Daten in Ihrer Aktivität auswerten möchten (in Sicht), können Sie eine Übertragung an Ihre Aktivität senden. Es gibt andere Möglichkeiten, um Daten für die Aktivität zu geben, aber für mich war die Lösung mit einer Übertragung die beste Option (musste auch andere Informationen senden).