Implemented automatic update preference

This commit is contained in:
daniel oeh 2012-07-08 13:40:10 +02:00
parent 2163049305
commit a05edcb0a4
3 changed files with 65 additions and 3 deletions

View File

@ -83,6 +83,11 @@
</intent-filter> </intent-filter>
<meta-data android:resource="@xml/player_widget_info" android:name="android.appwidget.provider"/> <meta-data android:resource="@xml/player_widget_info" android:name="android.appwidget.provider"/>
</receiver> </receiver>
<receiver android:name=".receiver.FeedUpdateReceiver">
<intent-filter>
<action android:name="de.podfetcher.feedupdatereceiver.refreshFeeds"/>
</intent-filter>
</receiver>
</application> </application>
</manifest> </manifest>

View File

@ -1,11 +1,22 @@
package de.podfetcher; package de.podfetcher;
import java.util.concurrent.TimeUnit;
import android.app.AlarmManager;
import android.app.Application; 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 android.util.Log;
import de.podfetcher.asynctask.FeedImageLoader; import de.podfetcher.asynctask.FeedImageLoader;
import de.podfetcher.feed.FeedManager; 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"; private static final String TAG = "PodcastApp";
public static final String PREF_NAME = "PodfetcherPrefs"; 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_FOLLOW_QUEUE = "prefFollowQueue";
public static final String PREF_DOWNLOAD_MEDIA_ON_WIFI_ONLY = "prefDownloadMediaOnWifiOnly"; public static final String PREF_DOWNLOAD_MEDIA_ON_WIFI_ONLY = "prefDownloadMediaOnWifiOnly";
public static final String PREF_UPDATE_INTERVALL = "prefAutoUpdateIntervall"; public static final String PREF_UPDATE_INTERVALL = "prefAutoUpdateIntervall";
private static PodcastApp singleton; private static PodcastApp singleton;
public static PodcastApp getInstance() { public static PodcastApp getInstance() {
@ -24,7 +35,9 @@ public class PodcastApp extends Application {
public void onCreate() { public void onCreate() {
super.onCreate(); super.onCreate();
singleton = this; singleton = this;
SharedPreferences prefs = PreferenceManager
.getDefaultSharedPreferences(this);
prefs.registerOnSharedPreferenceChangeListener(this);
FeedManager manager = FeedManager.getInstance(); FeedManager manager = FeedManager.getInstance();
manager.loadDBData(getApplicationContext()); manager.loadDBData(getApplicationContext());
} }
@ -36,4 +49,26 @@ public class PodcastApp extends Application {
FeedImageLoader.getInstance().wipeImageCache(); 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");
}
}
}
} }

View File

@ -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);
}
}
}