summaryrefslogtreecommitdiff
path: root/core/src/main/java/de/danoeh/antennapod
diff options
context:
space:
mode:
Diffstat (limited to 'core/src/main/java/de/danoeh/antennapod')
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/feed/FeedMedia.java2
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/preferences/PlaybackPreferences.java43
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/preferences/UserPreferences.java8
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/receiver/FeedUpdateReceiver.java2
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/service/FeedUpdateWorker.java2
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/sync/SyncService.java6
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/util/Converter.java44
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/util/download/AutoUpdateManager.java30
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/util/playback/Playable.java2
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/util/playback/RemoteMedia.java2
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/util/playback/Timeline.java20
11 files changed, 65 insertions, 96 deletions
diff --git a/core/src/main/java/de/danoeh/antennapod/core/feed/FeedMedia.java b/core/src/main/java/de/danoeh/antennapod/core/feed/FeedMedia.java
index 175f8e77b..a41b04b53 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/feed/FeedMedia.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/feed/FeedMedia.java
@@ -209,7 +209,7 @@ public class FeedMedia extends FeedFile implements Playable {
* currently being played.
*/
public boolean isPlaying() {
- return PlaybackPreferences.getCurrentlyPlayingMedia() == FeedMedia.PLAYABLE_TYPE_FEEDMEDIA
+ return PlaybackPreferences.getCurrentlyPlayingMediaType() == FeedMedia.PLAYABLE_TYPE_FEEDMEDIA
&& PlaybackPreferences.getCurrentlyPlayingFeedMediaId() == id;
}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/preferences/PlaybackPreferences.java b/core/src/main/java/de/danoeh/antennapod/core/preferences/PlaybackPreferences.java
index 4e2233407..a4612d857 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/preferences/PlaybackPreferences.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/preferences/PlaybackPreferences.java
@@ -33,14 +33,16 @@ public class PlaybackPreferences implements SharedPreferences.OnSharedPreference
* Contains the id of the currently playing FeedMedia object or
* NO_MEDIA_PLAYING if the currently playing media is no FeedMedia object.
*/
- private static final String PREF_CURRENTLY_PLAYING_FEEDMEDIA_ID = "de.danoeh.antennapod.preferences.lastPlayedFeedMediaId";
+ private static final String PREF_CURRENTLY_PLAYING_FEEDMEDIA_ID
+ = "de.danoeh.antennapod.preferences.lastPlayedFeedMediaId";
/**
* Type of the media object that is currently being played. This preference
* is set to NO_MEDIA_PLAYING after playback has been completed and is set
* as soon as the 'play' button is pressed.
*/
- private static final String PREF_CURRENTLY_PLAYING_MEDIA = "de.danoeh.antennapod.preferences.currentlyPlayingMedia";
+ private static final String PREF_CURRENTLY_PLAYING_MEDIA_TYPE
+ = "de.danoeh.antennapod.preferences.currentlyPlayingMedia";
/**
* True if last played media was streamed.
@@ -61,7 +63,8 @@ public class PlaybackPreferences implements SharedPreferences.OnSharedPreference
* A temporary playback speed which overrides the per-feed playback speed for the currently playing
* media. Considered unset if set to SPEED_USE_GLOBAL;
*/
- private static final String PREF_CURRENTLY_PLAYING_TEMPORARY_PLAYBACK_SPEED = "de.danoeh.antennapod.preferences.temporaryPlaybackSpeed";
+ private static final String PREF_CURRENTLY_PLAYING_TEMPORARY_PLAYBACK_SPEED
+ = "de.danoeh.antennapod.preferences.temporaryPlaybackSpeed";
/**
@@ -102,21 +105,21 @@ public class PlaybackPreferences implements SharedPreferences.OnSharedPreference
}
}
- public static long getCurrentlyPlayingMedia() {
- return prefs.getLong(PREF_CURRENTLY_PLAYING_MEDIA, NO_MEDIA_PLAYING);
- }
+ public static long getCurrentlyPlayingMediaType() {
+ return prefs.getLong(PREF_CURRENTLY_PLAYING_MEDIA_TYPE, NO_MEDIA_PLAYING);
+ }
- public static long getCurrentlyPlayingFeedMediaId() {
- return prefs.getLong(PREF_CURRENTLY_PLAYING_FEEDMEDIA_ID, NO_MEDIA_PLAYING);
- }
+ public static long getCurrentlyPlayingFeedMediaId() {
+ return prefs.getLong(PREF_CURRENTLY_PLAYING_FEEDMEDIA_ID, NO_MEDIA_PLAYING);
+ }
- public static boolean getCurrentEpisodeIsStream() {
- return prefs.getBoolean(PREF_CURRENT_EPISODE_IS_STREAM, true);
- }
+ public static boolean getCurrentEpisodeIsStream() {
+ return prefs.getBoolean(PREF_CURRENT_EPISODE_IS_STREAM, true);
+ }
- public static boolean getCurrentEpisodeIsVideo() {
- return prefs.getBoolean(PREF_CURRENT_EPISODE_IS_VIDEO, false);
- }
+ public static boolean getCurrentEpisodeIsVideo() {
+ return prefs.getBoolean(PREF_CURRENT_EPISODE_IS_VIDEO, false);
+ }
public static int getCurrentPlayerStatus() {
return prefs.getInt(PREF_CURRENT_PLAYER_STATUS, PLAYER_STATUS_OTHER);
@@ -128,7 +131,7 @@ public class PlaybackPreferences implements SharedPreferences.OnSharedPreference
public static void writeNoMediaPlaying() {
SharedPreferences.Editor editor = prefs.edit();
- editor.putLong(PREF_CURRENTLY_PLAYING_MEDIA, NO_MEDIA_PLAYING);
+ editor.putLong(PREF_CURRENTLY_PLAYING_MEDIA_TYPE, NO_MEDIA_PLAYING);
editor.putLong(PREF_CURRENTLY_PLAYING_FEED_ID, NO_MEDIA_PLAYING);
editor.putLong(PREF_CURRENTLY_PLAYING_FEEDMEDIA_ID, NO_MEDIA_PLAYING);
editor.putInt(PREF_CURRENT_PLAYER_STATUS, PLAYER_STATUS_OTHER);
@@ -142,13 +145,13 @@ public class PlaybackPreferences implements SharedPreferences.OnSharedPreference
if (playable == null) {
writeNoMediaPlaying();
} else {
- editor.putLong(PREF_CURRENTLY_PLAYING_MEDIA, playable.getPlayableType());
+ editor.putLong(PREF_CURRENTLY_PLAYING_MEDIA_TYPE, playable.getPlayableType());
editor.putBoolean(PREF_CURRENT_EPISODE_IS_STREAM, stream);
editor.putBoolean(PREF_CURRENT_EPISODE_IS_VIDEO, playable.getMediaType() == MediaType.VIDEO);
if (playable instanceof FeedMedia) {
- FeedMedia fMedia = (FeedMedia) playable;
- editor.putLong(PREF_CURRENTLY_PLAYING_FEED_ID, fMedia.getItem().getFeed().getId());
- editor.putLong(PREF_CURRENTLY_PLAYING_FEEDMEDIA_ID, fMedia.getId());
+ FeedMedia feedMedia = (FeedMedia) playable;
+ editor.putLong(PREF_CURRENTLY_PLAYING_FEED_ID, feedMedia.getItem().getFeed().getId());
+ editor.putLong(PREF_CURRENTLY_PLAYING_FEEDMEDIA_ID, feedMedia.getId());
} else {
editor.putLong(PREF_CURRENTLY_PLAYING_FEED_ID, NO_MEDIA_PLAYING);
editor.putLong(PREF_CURRENTLY_PLAYING_FEEDMEDIA_ID, NO_MEDIA_PLAYING);
diff --git a/core/src/main/java/de/danoeh/antennapod/core/preferences/UserPreferences.java b/core/src/main/java/de/danoeh/antennapod/core/preferences/UserPreferences.java
index 476c2cd9e..cb5a405c0 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/preferences/UserPreferences.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/preferences/UserPreferences.java
@@ -695,7 +695,7 @@ public class UserPreferences {
.apply();
// when updating with an interval, we assume the user wants
// to update *now* and then every 'hours' interval thereafter.
- AutoUpdateManager.restartUpdateAlarm();
+ AutoUpdateManager.restartUpdateAlarm(context);
}
/**
@@ -705,14 +705,14 @@ public class UserPreferences {
prefs.edit()
.putString(PREF_UPDATE_INTERVAL, hourOfDay + ":" + minute)
.apply();
- AutoUpdateManager.restartUpdateAlarm();
+ AutoUpdateManager.restartUpdateAlarm(context);
}
- public static void disableAutoUpdate() {
+ public static void disableAutoUpdate(Context context) {
prefs.edit()
.putString(PREF_UPDATE_INTERVAL, "0")
.apply();
- AutoUpdateManager.disableAutoUpdate();
+ AutoUpdateManager.disableAutoUpdate(context);
}
public static boolean gpodnetNotificationsEnabled() {
diff --git a/core/src/main/java/de/danoeh/antennapod/core/receiver/FeedUpdateReceiver.java b/core/src/main/java/de/danoeh/antennapod/core/receiver/FeedUpdateReceiver.java
index af0a0d426..b667b154c 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/receiver/FeedUpdateReceiver.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/receiver/FeedUpdateReceiver.java
@@ -20,7 +20,7 @@ public class FeedUpdateReceiver extends BroadcastReceiver {
Log.d(TAG, "Received intent");
ClientConfig.initialize(context);
- AutoUpdateManager.runOnce();
+ AutoUpdateManager.runOnce(context);
}
}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/FeedUpdateWorker.java b/core/src/main/java/de/danoeh/antennapod/core/service/FeedUpdateWorker.java
index 8811faf8a..6265fc30d 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/service/FeedUpdateWorker.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/service/FeedUpdateWorker.java
@@ -39,7 +39,7 @@ public class FeedUpdateWorker extends Worker {
if (!isRunOnce && UserPreferences.isAutoUpdateTimeOfDay()) {
// WorkManager does not allow to set specific time for repeated tasks.
// We repeatedly schedule a OneTimeWorkRequest instead.
- AutoUpdateManager.restartUpdateAlarm();
+ AutoUpdateManager.restartUpdateAlarm(getApplicationContext());
}
return Result.success();
diff --git a/core/src/main/java/de/danoeh/antennapod/core/sync/SyncService.java b/core/src/main/java/de/danoeh/antennapod/core/sync/SyncService.java
index 828691737..e9e224851 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/sync/SyncService.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/sync/SyncService.java
@@ -168,7 +168,7 @@ public class SyncService extends Worker {
public static void sync(Context context) {
OneTimeWorkRequest workRequest = getWorkRequest().build();
- WorkManager.getInstance().enqueueUniqueWork(WORK_ID_SYNC, ExistingWorkPolicy.REPLACE, workRequest);
+ WorkManager.getInstance(context).enqueueUniqueWork(WORK_ID_SYNC, ExistingWorkPolicy.REPLACE, workRequest);
EventBus.getDefault().postSticky(new SyncServiceEvent(R.string.sync_status_started));
}
@@ -176,7 +176,7 @@ public class SyncService extends Worker {
OneTimeWorkRequest workRequest = getWorkRequest()
.setInitialDelay(0L, TimeUnit.SECONDS)
.build();
- WorkManager.getInstance().enqueueUniqueWork(WORK_ID_SYNC, ExistingWorkPolicy.REPLACE, workRequest);
+ WorkManager.getInstance(context).enqueueUniqueWork(WORK_ID_SYNC, ExistingWorkPolicy.REPLACE, workRequest);
EventBus.getDefault().postSticky(new SyncServiceEvent(R.string.sync_status_started));
}
@@ -192,7 +192,7 @@ public class SyncService extends Worker {
.setInitialDelay(0L, TimeUnit.SECONDS)
.setBackoffCriteria(BackoffPolicy.EXPONENTIAL, 1, TimeUnit.MINUTES)
.build();
- WorkManager.getInstance().enqueueUniqueWork(WORK_ID_SYNC, ExistingWorkPolicy.REPLACE, workRequest);
+ WorkManager.getInstance(context).enqueueUniqueWork(WORK_ID_SYNC, ExistingWorkPolicy.REPLACE, workRequest);
EventBus.getDefault().postSticky(new SyncServiceEvent(R.string.sync_status_started));
}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/Converter.java b/core/src/main/java/de/danoeh/antennapod/core/util/Converter.java
index 6ecca941a..4e7e6a6b6 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/util/Converter.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/util/Converter.java
@@ -1,7 +1,6 @@
package de.danoeh.antennapod.core.util;
import android.content.Context;
-import android.util.Log;
import java.util.Locale;
@@ -15,53 +14,10 @@ public final class Converter {
/** Logging tag. */
private static final String TAG = "Converter";
-
-
- /** Indicates that the value is in the Byte range.*/
- private static final int B_RANGE = 0;
- /** Indicates that the value is in the Kilobyte range.*/
- private static final int KB_RANGE = 1;
- /** Indicates that the value is in the Megabyte range.*/
- private static final int MB_RANGE = 2;
- /** Indicates that the value is in the Gigabyte range.*/
- private static final int GB_RANGE = 3;
- /** Determines the length of the number for best readability.*/
- private static final int NUM_LENGTH = 1024;
private static final int HOURS_MIL = 3600000;
private static final int MINUTES_MIL = 60000;
private static final int SECONDS_MIL = 1000;
-
- /** Takes a byte-value and converts it into a more readable
- * String.
- * @param input The value to convert
- * @return The converted String with a unit
- * */
- public static String byteToString(final long input) {
- int i = 0;
- int result = 0;
-
- for (i = 0; i < GB_RANGE + 1; i++) {
- result = (int) (input / Math.pow(1024, i));
- if (result < NUM_LENGTH) {
- break;
- }
- }
-
- switch (i) {
- case B_RANGE:
- return result + " B";
- case KB_RANGE:
- return result + " KB";
- case MB_RANGE:
- return result + " MB";
- case GB_RANGE:
- return result + " GB";
- default:
- Log.e(TAG, "Error happened in byteToString");
- return "ERROR";
- }
- }
/** Converts milliseconds to a string containing hours, minutes and seconds */
public static String getDurationStringLong(int duration) {
diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/download/AutoUpdateManager.java b/core/src/main/java/de/danoeh/antennapod/core/util/download/AutoUpdateManager.java
index fc04d82cc..991089910 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/util/download/AutoUpdateManager.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/util/download/AutoUpdateManager.java
@@ -32,24 +32,25 @@ public class AutoUpdateManager {
/**
* Start / restart periodic auto feed refresh
+ * @param context Context
*/
- public static void restartUpdateAlarm() {
+ public static void restartUpdateAlarm(Context context) {
if (UserPreferences.isAutoUpdateDisabled()) {
- disableAutoUpdate();
+ disableAutoUpdate(context);
} else if (UserPreferences.isAutoUpdateTimeOfDay()) {
int[] timeOfDay = UserPreferences.getUpdateTimeOfDay();
Log.d(TAG, "timeOfDay: " + Arrays.toString(timeOfDay));
- restartUpdateTimeOfDayAlarm(timeOfDay[0], timeOfDay[1]);
+ restartUpdateTimeOfDayAlarm(timeOfDay[0], timeOfDay[1], context);
} else {
long milliseconds = UserPreferences.getUpdateInterval();
- restartUpdateIntervalAlarm(milliseconds);
+ restartUpdateIntervalAlarm(milliseconds, context);
}
}
/**
* Sets the interval in which the feeds are refreshed automatically
*/
- private static void restartUpdateIntervalAlarm(long intervalMillis) {
+ private static void restartUpdateIntervalAlarm(long intervalMillis, Context context) {
Log.d(TAG, "Restarting update alarm.");
PeriodicWorkRequest workRequest = new PeriodicWorkRequest.Builder(FeedUpdateWorker.class,
@@ -57,14 +58,14 @@ public class AutoUpdateManager {
.setConstraints(getConstraints())
.build();
- WorkManager.getInstance().enqueueUniquePeriodicWork(
+ WorkManager.getInstance(context).enqueueUniquePeriodicWork(
WORK_ID_FEED_UPDATE, ExistingPeriodicWorkPolicy.REPLACE, workRequest);
}
/**
* Sets time of day the feeds are refreshed automatically
*/
- private static void restartUpdateTimeOfDayAlarm(int hoursOfDay, int minute) {
+ private static void restartUpdateTimeOfDayAlarm(int hoursOfDay, int minute, Context context) {
Log.d(TAG, "Restarting update alarm.");
Calendar now = Calendar.getInstance();
@@ -81,7 +82,8 @@ public class AutoUpdateManager {
.setInitialDelay(triggerAtMillis, TimeUnit.MILLISECONDS)
.build();
- WorkManager.getInstance().enqueueUniqueWork(WORK_ID_FEED_UPDATE, ExistingWorkPolicy.REPLACE, workRequest);
+ WorkManager.getInstance(context).enqueueUniqueWork(WORK_ID_FEED_UPDATE,
+ ExistingWorkPolicy.REPLACE, workRequest);
}
/**
@@ -89,8 +91,9 @@ public class AutoUpdateManager {
*
* Callers from UI should use {@link #runImmediate(Context)}, as it will guarantee
* the refresh be run immediately.
+ * @param context Context
*/
- public static void runOnce() {
+ public static void runOnce(Context context) {
Log.d(TAG, "Run auto update once, as soon as OS allows.");
OneTimeWorkRequest workRequest = new OneTimeWorkRequest.Builder(FeedUpdateWorker.class)
@@ -102,7 +105,8 @@ public class AutoUpdateManager {
)
.build();
- WorkManager.getInstance().enqueueUniqueWork(WORK_ID_FEED_UPDATE_ONCE, ExistingWorkPolicy.REPLACE, workRequest);
+ WorkManager.getInstance(context).enqueueUniqueWork(WORK_ID_FEED_UPDATE_ONCE,
+ ExistingWorkPolicy.REPLACE, workRequest);
}
@@ -110,7 +114,7 @@ public class AutoUpdateManager {
/**
* Run auto feed refresh once in background immediately, using its own thread.
*
- * Callers where the additional threads is not suitable should use {@link #runOnce()}
+ * Callers where the additional threads is not suitable should use {@link #runOnce(Context)}
*/
public static void runImmediate(@NonNull Context context) {
Log.d(TAG, "Run auto update immediately in background.");
@@ -119,8 +123,8 @@ public class AutoUpdateManager {
}, "ManualRefreshAllFeeds").start();
}
- public static void disableAutoUpdate() {
- WorkManager.getInstance().cancelUniqueWork(WORK_ID_FEED_UPDATE);
+ public static void disableAutoUpdate(Context context) {
+ WorkManager.getInstance(context).cancelUniqueWork(WORK_ID_FEED_UPDATE);
}
private static Constraints getConstraints() {
diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/playback/Playable.java b/core/src/main/java/de/danoeh/antennapod/core/util/playback/Playable.java
index 378c47faf..24aabf212 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/util/playback/Playable.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/util/playback/Playable.java
@@ -188,7 +188,7 @@ public interface Playable extends Parcelable,
*/
@Nullable
public static Playable createInstanceFromPreferences(Context context) {
- long currentlyPlayingMedia = PlaybackPreferences.getCurrentlyPlayingMedia();
+ long currentlyPlayingMedia = PlaybackPreferences.getCurrentlyPlayingMediaType();
if (currentlyPlayingMedia != PlaybackPreferences.NO_MEDIA_PLAYING) {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context.getApplicationContext());
return PlayableUtils.createInstanceFromPreferences(context,
diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/playback/RemoteMedia.java b/core/src/main/java/de/danoeh/antennapod/core/util/playback/RemoteMedia.java
index c39121564..ca09cda4b 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/util/playback/RemoteMedia.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/util/playback/RemoteMedia.java
@@ -282,7 +282,7 @@ public class RemoteMedia implements Playable {
dest.writeString(imageUrl);
dest.writeString(feedLink);
dest.writeString(mimeType);
- dest.writeLong(pubDate.getTime());
+ dest.writeLong((pubDate != null) ? pubDate.getTime() : 0);
dest.writeString(notes);
dest.writeInt(duration);
dest.writeInt(position);
diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/playback/Timeline.java b/core/src/main/java/de/danoeh/antennapod/core/util/playback/Timeline.java
index b59a95cd9..40849a262 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/util/playback/Timeline.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/util/playback/Timeline.java
@@ -53,12 +53,8 @@ public class Timeline {
this.shownotesProvider = shownotesProvider;
noShownotesLabel = context.getString(R.string.no_shownotes_label);
-
- TypedArray res = context.getTheme().obtainStyledAttributes(new int[]{android.R.attr.textColorPrimary});
- @ColorInt int col = res.getColor(0, 0);
- final String colorPrimary = "rgba(" + Color.red(col) + "," + Color.green(col) + ","
- + Color.blue(col) + "," + (Color.alpha(col) / 255.0) + ")";
- res.recycle();
+ final String colorPrimary = colorToHtml(context, android.R.attr.textColorPrimary);
+ final String colorAccent = colorToHtml(context, R.attr.colorAccent);
final int margin = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 8,
context.getResources().getDisplayMetrics());
String styleString = "";
@@ -68,7 +64,17 @@ public class Timeline {
} catch (IOException e) {
e.printStackTrace();
}
- webviewStyle = String.format(Locale.getDefault(), styleString, colorPrimary, margin, margin, margin, margin);
+ webviewStyle = String.format(Locale.US, styleString, colorPrimary, colorAccent,
+ margin, margin, margin, margin);
+ }
+
+ private String colorToHtml(Context context, int colorAttr) {
+ TypedArray res = context.getTheme().obtainStyledAttributes(new int[]{colorAttr});
+ @ColorInt int col = res.getColor(0, 0);
+ final String color = "rgba(" + Color.red(col) + "," + Color.green(col) + ","
+ + Color.blue(col) + "," + (Color.alpha(col) / 255.0) + ")";
+ res.recycle();
+ return color;
}
/**