diff options
author | daniel oeh <daniel.oeh@gmail.com> | 2012-07-08 13:40:10 +0200 |
---|---|---|
committer | daniel oeh <daniel.oeh@gmail.com> | 2012-07-08 13:40:10 +0200 |
commit | a05edcb0a468f93c46a642b9e5e6220b1e82e1c1 (patch) | |
tree | cbb27d6d7f1ed6497091a021f994d9b70176642c /src | |
parent | 216304930591ecec6d736474ac2a1facdf6352ff (diff) | |
download | AntennaPod-a05edcb0a468f93c46a642b9e5e6220b1e82e1c1.zip |
Implemented automatic update preference
Diffstat (limited to 'src')
-rw-r--r-- | src/de/podfetcher/PodcastApp.java | 41 | ||||
-rw-r--r-- | src/de/podfetcher/receiver/FeedUpdateReceiver.java | 22 |
2 files changed, 60 insertions, 3 deletions
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); + } + } + +} |