diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 0778a287d..ec9d79719 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -83,6 +83,11 @@ + + + + + \ No newline at end of file diff --git a/src/de/podfetcher/PodcastApp.java b/src/de/podfetcher/PodcastApp.java index b58e7997d..0b2da0e99 100644 --- a/src/de/podfetcher/PodcastApp.java +++ b/src/de/podfetcher/PodcastApp.java @@ -1,11 +1,22 @@ package de.podfetcher; +import java.util.concurrent.TimeUnit; + +import android.app.AlarmManager; import android.app.Application; +import android.app.PendingIntent; +import android.content.Context; +import android.content.Intent; +import android.content.SharedPreferences; +import android.preference.PreferenceManager; import android.util.Log; import de.podfetcher.asynctask.FeedImageLoader; import de.podfetcher.feed.FeedManager; +import de.podfetcher.receiver.FeedUpdateReceiver; + +public class PodcastApp extends Application implements + SharedPreferences.OnSharedPreferenceChangeListener { -public class PodcastApp extends Application { private static final String TAG = "PodcastApp"; public static final String PREF_NAME = "PodfetcherPrefs"; @@ -13,7 +24,7 @@ public class PodcastApp extends Application { public static final String PREF_FOLLOW_QUEUE = "prefFollowQueue"; public static final String PREF_DOWNLOAD_MEDIA_ON_WIFI_ONLY = "prefDownloadMediaOnWifiOnly"; public static final String PREF_UPDATE_INTERVALL = "prefAutoUpdateIntervall"; - + private static PodcastApp singleton; public static PodcastApp getInstance() { @@ -24,7 +35,9 @@ public class PodcastApp extends Application { public void onCreate() { super.onCreate(); singleton = this; - + SharedPreferences prefs = PreferenceManager + .getDefaultSharedPreferences(this); + prefs.registerOnSharedPreferenceChangeListener(this); FeedManager manager = FeedManager.getInstance(); manager.loadDBData(getApplicationContext()); } @@ -36,4 +49,26 @@ public class PodcastApp extends Application { FeedImageLoader.getInstance().wipeImageCache(); } + @Override + public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, + String key) { + Log.d(TAG, "Registered change of application preferences"); + if (key.equals(PREF_UPDATE_INTERVALL)) { + AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE); + int hours = Integer.parseInt(sharedPreferences.getString( + PREF_UPDATE_INTERVALL, "0")); + PendingIntent updateIntent = PendingIntent.getBroadcast(this, 0, + new Intent(FeedUpdateReceiver.ACTION_REFRESH_FEEDS), 0); + alarmManager.cancel(updateIntent); + if (hours != 0) { + long newIntervall = TimeUnit.HOURS.toMillis(hours); + alarmManager.setRepeating( + AlarmManager.RTC_WAKEUP, newIntervall, + newIntervall, updateIntent); + Log.d(TAG, "Changed alarm to new intervall"); + } else { + Log.d(TAG, "Automatic update was deactivated"); + } + } + } } diff --git a/src/de/podfetcher/receiver/FeedUpdateReceiver.java b/src/de/podfetcher/receiver/FeedUpdateReceiver.java new file mode 100644 index 000000000..1556a33ef --- /dev/null +++ b/src/de/podfetcher/receiver/FeedUpdateReceiver.java @@ -0,0 +1,22 @@ +package de.podfetcher.receiver; + +import de.podfetcher.feed.FeedManager; +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; +import android.util.Log; + +/** Refreshes all feeds when it receives an intent */ +public class FeedUpdateReceiver extends BroadcastReceiver { + private static final String TAG = "FeedUpdateReceiver"; + public static final String ACTION_REFRESH_FEEDS = "de.podfetcher.feedupdatereceiver.refreshFeeds"; + + @Override + public void onReceive(Context context, Intent intent) { + if (intent.getAction().equals(ACTION_REFRESH_FEEDS)) { + Log.d(TAG, "Received intent"); + FeedManager.getInstance().refreshAllFeeds(context); + } + } + +}