summaryrefslogtreecommitdiff
path: root/core
diff options
context:
space:
mode:
Diffstat (limited to 'core')
-rw-r--r--core/src/main/AndroidManifest.xml5
-rw-r--r--core/src/main/java/androidx/core/app/SafeJobIntentService.java118
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/dialog/ConfirmationDialog.java63
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/glide/AudioCoverFetcher.java3
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/preferences/UserPreferences.java19
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/receiver/PlayerWidget.java8
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/service/download/handler/FeedSyncTask.java1
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/service/playback/LocalPSMP.java11
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackService.java12
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackServiceStateManager.java4
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/storage/DBTasks.java49
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/storage/DBWriter.java7
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/storage/FeedSearcher.java9
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/util/DateFormatter.java2
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/util/NetworkUtils.java13
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/util/PowerUtils.java2
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/widget/WidgetUpdaterJobService.java33
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/widget/WidgetUpdaterWorker.java59
-rw-r--r--core/src/play/java/de/danoeh/antennapod/core/service/playback/WearMediaSession.java2
19 files changed, 109 insertions, 311 deletions
diff --git a/core/src/main/AndroidManifest.xml b/core/src/main/AndroidManifest.xml
index 7478eb48a..9b23acd1d 100644
--- a/core/src/main/AndroidManifest.xml
+++ b/core/src/main/AndroidManifest.xml
@@ -46,11 +46,6 @@
android:label="@string/feed_update_receiver_name"
android:exported="true"
tools:ignore="ExportedReceiver" /> <!-- allow feeds update to be triggered by external apps -->
-
- <service
- android:name=".widget.WidgetUpdaterJobService"
- android:permission="android.permission.BIND_JOB_SERVICE"
- android:exported="true"/>
</application>
<queries>
diff --git a/core/src/main/java/androidx/core/app/SafeJobIntentService.java b/core/src/main/java/androidx/core/app/SafeJobIntentService.java
deleted file mode 100644
index aedc9418b..000000000
--- a/core/src/main/java/androidx/core/app/SafeJobIntentService.java
+++ /dev/null
@@ -1,118 +0,0 @@
-package androidx.core.app;
-
-import android.app.job.JobParameters;
-import android.app.job.JobServiceEngine;
-import android.app.job.JobWorkItem;
-import android.content.Intent;
-import android.os.Build;
-import android.os.IBinder;
-import androidx.annotation.RequiresApi;
-import android.util.Log;
-
-
-public abstract class SafeJobIntentService extends JobIntentService {
-
- @Override
- public void onCreate() {
- super.onCreate();
- if (Build.VERSION.SDK_INT >= 26) {
- mJobImpl = new SafeJobServiceEngineImpl(this);
- }
- }
-
- /**
- * Implementation of a safe JobServiceEngine for interaction with JobIntentService.
- */
- @RequiresApi(26)
- static final class SafeJobServiceEngineImpl extends JobServiceEngine
- implements JobIntentService.CompatJobEngine {
- static final String TAG = "JobServiceEngineImpl";
-
- static final boolean DEBUG = false;
-
- final JobIntentService mService;
- final Object mLock = new Object();
- JobParameters mParams;
-
- final class WrapperWorkItem implements JobIntentService.GenericWorkItem {
- final JobWorkItem mJobWork;
-
- WrapperWorkItem(JobWorkItem jobWork) {
- mJobWork = jobWork;
- }
-
- @Override
- public Intent getIntent() {
- return mJobWork.getIntent();
- }
-
- @Override
- public void complete() {
- synchronized (mLock) {
- if (mParams != null) {
- try {
- mParams.completeWork(mJobWork);
- } catch (SecurityException e) {
- Log.e(TAG, Log.getStackTraceString(e));
- }
- }
- }
- }
- }
-
- SafeJobServiceEngineImpl(JobIntentService service) {
- super(service);
- mService = service;
- }
-
- @Override
- public IBinder compatGetBinder() {
- return getBinder();
- }
-
- @Override
- public boolean onStartJob(JobParameters params) {
- if (DEBUG) Log.d(TAG, "onStartJob: " + params);
- mParams = params;
- // We can now start dequeuing work!
- mService.ensureProcessorRunningLocked(false);
- return true;
- }
-
- @Override
- public boolean onStopJob(JobParameters params) {
- if (DEBUG) Log.d(TAG, "onStartJob: " + params);
- boolean result = mService.doStopCurrentWork();
- synchronized (mLock) {
- // Once we return, the job is stopped, so its JobParameters are no
- // longer valid and we should not be doing anything with them.
- mParams = null;
- }
- return result;
- }
-
- /**
- * Dequeue some work.
- */
- @Override
- public JobIntentService.GenericWorkItem dequeueWork() {
- JobWorkItem work = null;
- synchronized (mLock) {
- if (mParams == null) {
- return null;
- }
- try {
- work = mParams.dequeueWork();
- } catch (SecurityException e) {
- Log.e(TAG, Log.getStackTraceString(e));
- }
- }
- if (work != null) {
- work.getIntent().setExtrasClassLoader(mService.getClassLoader());
- return new WrapperWorkItem(work);
- } else {
- return null;
- }
- }
- }
-}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/dialog/ConfirmationDialog.java b/core/src/main/java/de/danoeh/antennapod/core/dialog/ConfirmationDialog.java
index c9fe886fb..47b5dcd09 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/dialog/ConfirmationDialog.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/dialog/ConfirmationDialog.java
@@ -13,50 +13,43 @@ import de.danoeh.antennapod.core.R;
*/
public abstract class ConfirmationDialog {
- private static final String TAG = ConfirmationDialog.class.getSimpleName();
+ private static final String TAG = ConfirmationDialog.class.getSimpleName();
- private final Context context;
- private final int titleId;
- private final String message;
+ private final Context context;
+ private final int titleId;
+ private final String message;
- private int positiveText;
- private int negativeText;
+ private int positiveText;
- public ConfirmationDialog(Context context, int titleId, int messageId) {
- this(context, titleId, context.getString(messageId));
- }
+ public ConfirmationDialog(Context context, int titleId, int messageId) {
+ this(context, titleId, context.getString(messageId));
+ }
- public ConfirmationDialog(Context context, int titleId, String message) {
- this.context = context;
- this.titleId = titleId;
- this.message = message;
- }
+ public ConfirmationDialog(Context context, int titleId, String message) {
+ this.context = context;
+ this.titleId = titleId;
+ this.message = message;
+ }
- private void onCancelButtonPressed(DialogInterface dialog) {
- Log.d(TAG, "Dialog was cancelled");
- dialog.dismiss();
- }
+ private void onCancelButtonPressed(DialogInterface dialog) {
+ Log.d(TAG, "Dialog was cancelled");
+ dialog.dismiss();
+ }
public void setPositiveText(int id) {
this.positiveText = id;
}
- public void setNegativeText(int id) {
- this.negativeText = id;
+ public abstract void onConfirmButtonPressed(DialogInterface dialog);
+
+ public final AlertDialog createNewDialog() {
+ AlertDialog.Builder builder = new AlertDialog.Builder(context);
+ builder.setTitle(titleId);
+ builder.setMessage(message);
+ builder.setPositiveButton(positiveText != 0 ? positiveText : R.string.confirm_label,
+ (dialog, which) -> onConfirmButtonPressed(dialog));
+ builder.setNegativeButton(R.string.cancel_label, (dialog, which) -> onCancelButtonPressed(dialog));
+ builder.setOnCancelListener(ConfirmationDialog.this::onCancelButtonPressed);
+ return builder.create();
}
-
-
- public abstract void onConfirmButtonPressed(DialogInterface dialog);
-
- public final AlertDialog createNewDialog() {
- AlertDialog.Builder builder = new AlertDialog.Builder(context);
- builder.setTitle(titleId);
- builder.setMessage(message);
- builder.setPositiveButton(positiveText != 0 ? positiveText : R.string.confirm_label,
- (dialog, which) -> onConfirmButtonPressed(dialog));
- builder.setNegativeButton(negativeText != 0 ? negativeText : R.string.cancel_label,
- (dialog, which) -> onCancelButtonPressed(dialog));
- builder.setOnCancelListener(ConfirmationDialog.this::onCancelButtonPressed);
- return builder.create();
- }
}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/glide/AudioCoverFetcher.java b/core/src/main/java/de/danoeh/antennapod/core/glide/AudioCoverFetcher.java
index b6b607904..9d270360a 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/glide/AudioCoverFetcher.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/glide/AudioCoverFetcher.java
@@ -16,9 +16,6 @@ import java.io.InputStream;
// see https://github.com/bumptech/glide/issues/699
class AudioCoverFetcher implements DataFetcher<InputStream> {
-
- private static final String TAG = "AudioCoverFetcher";
-
private final String path;
private final Context context;
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 82ad27dcd..82e1fb55a 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
@@ -125,12 +125,9 @@ public class UserPreferences {
private static final String PREF_FAST_FORWARD_SECS = "prefFastForwardSecs";
private static final String PREF_REWIND_SECS = "prefRewindSecs";
private static final String PREF_QUEUE_LOCKED = "prefQueueLocked";
- private static final String PREF_LEFT_VOLUME = "prefLeftVolume";
- private static final String PREF_RIGHT_VOLUME = "prefRightVolume";
// Experimental
private static final String PREF_STEREO_TO_MONO = "PrefStereoToMono";
- public static final String PREF_CAST_ENABLED = "prefCast"; //Used for enabling Chromecast support
public static final int EPISODE_CLEANUP_QUEUE = -1;
public static final int EPISODE_CLEANUP_NULL = -2;
public static final int EPISODE_CLEANUP_EXCEPT_FAVORITE = -3;
@@ -827,10 +824,6 @@ public class UserPreferences {
return getMediaPlayer().equals(PREF_MEDIA_PLAYER_EXOPLAYER);
}
- public static void enableSonic() {
- prefs.edit().putString(PREF_MEDIA_PLAYER, "sonic").apply();
- }
-
public static void enableExoplayer() {
prefs.edit().putString(PREF_MEDIA_PLAYER, PREF_MEDIA_PLAYER_EXOPLAYER).apply();
}
@@ -956,13 +949,6 @@ public class UserPreferences {
return getUpdateTimeOfDay().length == 2;
}
- /**
- * Evaluates whether Cast support (Chromecast, Audio Cast, etc) is enabled on the preferences.
- */
- public static boolean isCastEnabled() {
- return prefs.getBoolean(PREF_CAST_ENABLED, false);
- }
-
public enum BackButtonBehavior {
DEFAULT, OPEN_DRAWER, DOUBLE_TAP, SHOW_PROMPT, GO_TO_PAGE
}
@@ -1059,9 +1045,4 @@ public class UserPreferences {
public static boolean shouldShowSubscriptionTitle() {
return prefs.getBoolean(PREF_SUBSCRIPTION_TITLE, false);
}
-
- public static void setSubscriptionTitleSetting(boolean showTitle) {
- prefs.edit().putBoolean(PREF_SUBSCRIPTION_TITLE, showTitle).apply();
- }
-
}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/receiver/PlayerWidget.java b/core/src/main/java/de/danoeh/antennapod/core/receiver/PlayerWidget.java
index cf0debed2..842dcdf75 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/receiver/PlayerWidget.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/receiver/PlayerWidget.java
@@ -9,7 +9,7 @@ import android.util.Log;
import java.util.Arrays;
-import de.danoeh.antennapod.core.widget.WidgetUpdaterJobService;
+import de.danoeh.antennapod.core.widget.WidgetUpdaterWorker;
public class PlayerWidget extends AppWidgetProvider {
private static final String TAG = "PlayerWidget";
@@ -25,7 +25,7 @@ public class PlayerWidget extends AppWidgetProvider {
public void onReceive(Context context, Intent intent) {
Log.d(TAG, "onReceive");
super.onReceive(context, intent);
- WidgetUpdaterJobService.performBackgroundUpdate(context);
+ WidgetUpdaterWorker.enqueueWork(context);
}
@Override
@@ -33,14 +33,14 @@ public class PlayerWidget extends AppWidgetProvider {
super.onEnabled(context);
Log.d(TAG, "Widget enabled");
setEnabled(context, true);
- WidgetUpdaterJobService.performBackgroundUpdate(context);
+ WidgetUpdaterWorker.enqueueWork(context);
}
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
Log.d(TAG, "onUpdate() called with: " + "context = [" + context + "], appWidgetManager = ["
+ appWidgetManager + "], appWidgetIds = [" + Arrays.toString(appWidgetIds) + "]");
- WidgetUpdaterJobService.performBackgroundUpdate(context);
+ WidgetUpdaterWorker.enqueueWork(context);
}
@Override
diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/download/handler/FeedSyncTask.java b/core/src/main/java/de/danoeh/antennapod/core/service/download/handler/FeedSyncTask.java
index 9760c57b1..8f559a889 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/service/download/handler/FeedSyncTask.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/service/download/handler/FeedSyncTask.java
@@ -9,7 +9,6 @@ import de.danoeh.antennapod.core.storage.DBTasks;
import de.danoeh.antennapod.parser.feed.FeedHandlerResult;
public class FeedSyncTask {
- private static final String TAG = "FeedParserTask";
private final DownloadRequest request;
private final Context context;
private DownloadStatus downloadStatus;
diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/playback/LocalPSMP.java b/core/src/main/java/de/danoeh/antennapod/core/service/playback/LocalPSMP.java
index d54d10dc6..f1b9510d9 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/service/playback/LocalPSMP.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/service/playback/LocalPSMP.java
@@ -713,7 +713,6 @@ public class LocalPSMP extends PlaybackServiceMediaPlayer {
return stream;
}
-
/**
* Releases internally used resources. This method should only be called when the object is not used anymore.
*/
@@ -738,16 +737,6 @@ public class LocalPSMP extends PlaybackServiceMediaPlayer {
releaseWifiLockIfNecessary();
}
- /**
- * Releases internally used resources. This method should only be called when the object is not used anymore.
- * This method is executed on an internal executor service.
- */
- @Override
- public void shutdownQuietly() {
- executor.submit(this::shutdown);
- executor.shutdown();
- }
-
@Override
public void setVideoSurface(final SurfaceHolder surface) {
executor.submit(() -> {
diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackService.java b/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackService.java
index d6d11bc8a..07e197752 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackService.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackService.java
@@ -82,7 +82,6 @@ import de.danoeh.antennapod.core.util.gui.NotificationUtils;
import de.danoeh.antennapod.core.util.playback.PlayableUtils;
import de.danoeh.antennapod.core.util.playback.PlaybackServiceStarter;
import de.danoeh.antennapod.core.widget.WidgetUpdater;
-import de.danoeh.antennapod.model.feed.Chapter;
import de.danoeh.antennapod.model.feed.Feed;
import de.danoeh.antennapod.model.feed.FeedItem;
import de.danoeh.antennapod.model.feed.FeedMedia;
@@ -1663,24 +1662,15 @@ public class PlaybackService extends MediaBrowserServiceCompat {
mediaPlayer.setStartWhenPrepared(s);
}
-
public void seekTo(final int t) {
mediaPlayer.seekTo(t);
}
-
private void seekDelta(final int d) {
mediaPlayer.seekDelta(d);
}
/**
- * Seek to the start of the specified chapter.
- */
- public void seekToChapter(Chapter c) {
- seekTo((int) c.getStart());
- }
-
- /**
* call getDuration() on mediaplayer or return INVALID_TIME if player is in
* an invalid state.
*/
@@ -1792,7 +1782,7 @@ public class PlaybackService extends MediaBrowserServiceCompat {
public void onPlayFromSearch(String query, Bundle extras) {
Log.d(TAG, "onPlayFromSearch query=" + query + " extras=" + extras.toString());
- List<FeedItem> results = FeedSearcher.searchFeedItems(getBaseContext(), query, 0);
+ List<FeedItem> results = FeedSearcher.searchFeedItems(query, 0);
if (results.size() > 0 && results.get(0).getMedia() != null) {
FeedMedia media = results.get(0).getMedia();
startPlaying(media, false);
diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackServiceStateManager.java b/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackServiceStateManager.java
index 83c065e0e..addc6b996 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackServiceStateManager.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackServiceStateManager.java
@@ -36,10 +36,6 @@ class PlaybackServiceStateManager {
isInForeground = false;
}
- boolean isInForeground() {
- return isInForeground;
- }
-
boolean hasReceivedValidStartCommand() {
return hasReceivedValidStartCommand;
}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/storage/DBTasks.java b/core/src/main/java/de/danoeh/antennapod/core/storage/DBTasks.java
index d1c041723..f447090a8 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/storage/DBTasks.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/storage/DBTasks.java
@@ -176,7 +176,7 @@ public final class DBTasks {
media.setDownloaded(false);
media.setFile_url(null);
DBWriter.setFeedMedia(media);
- EventBus.getDefault().post(FeedItemEvent.deletedMedia(media.getItem()));
+ EventBus.getDefault().post(FeedItemEvent.updated(media.getItem()));
EventBus.getDefault().post(new MessageEvent(context.getString(R.string.error_file_not_found)));
}
@@ -230,36 +230,7 @@ public final class DBTasks {
UserPreferences.getEpisodeCleanupAlgorithm().performCleanup(context);
}
- /**
- * Returns the successor of a FeedItem in the queue.
- *
- * @param itemId ID of the FeedItem
- * @param queue Used for determining the successor of the item. If this parameter is null, the method will load
- * the queue from the database in the same thread.
- * @return Successor of the FeedItem or null if the FeedItem is not in the queue or has no successor.
- */
- public static FeedItem getQueueSuccessorOfItem(final long itemId, List<FeedItem> queue) {
- FeedItem result = null;
- if (queue == null) {
- queue = DBReader.getQueue();
- }
- if (queue != null) {
- Iterator<FeedItem> iterator = queue.iterator();
- while (iterator.hasNext()) {
- FeedItem item = iterator.next();
- if (item.getId() == itemId) {
- if (iterator.hasNext()) {
- result = iterator.next();
- }
- break;
- }
- }
- }
- return result;
- }
-
- private static Feed searchFeedByIdentifyingValueOrID(PodDBAdapter adapter,
- Feed feed) {
+ private static Feed searchFeedByIdentifyingValueOrID(Feed feed) {
if (feed.getId() != 0) {
return DBReader.getFeed(feed.getId());
} else {
@@ -322,7 +293,7 @@ public final class DBTasks {
adapter.open();
// Look up feed in the feedslist
- final Feed savedFeed = searchFeedByIdentifyingValueOrID(adapter, newFeed);
+ final Feed savedFeed = searchFeedByIdentifyingValueOrID(newFeed);
if (savedFeed == null) {
Log.d(TAG, "Found no existing Feed with title "
+ newFeed.getTitle() + ". Adding as new one.");
@@ -456,7 +427,7 @@ public final class DBTasks {
if (savedFeed == null) {
DBWriter.addNewFeed(context, newFeed).get();
// Update with default values that are set in database
- resultFeed = searchFeedByIdentifyingValueOrID(adapter, newFeed);
+ resultFeed = searchFeedByIdentifyingValueOrID(newFeed);
} else {
DBWriter.setCompleteFeed(savedFeed).get();
}
@@ -487,15 +458,13 @@ public final class DBTasks {
/**
* Searches the FeedItems of a specific Feed for a given string.
*
- * @param context Used for accessing the DB.
* @param feedID The id of the feed whose items should be searched.
* @param query The search string.
* @return A FutureTask object that executes the search request
* and returns the search result as a List of FeedItems.
*/
- public static FutureTask<List<FeedItem>> searchFeedItems(final Context context,
- final long feedID, final String query) {
- return new FutureTask<>(new QueryTask<List<FeedItem>>(context) {
+ public static FutureTask<List<FeedItem>> searchFeedItems(final long feedID, final String query) {
+ return new FutureTask<>(new QueryTask<List<FeedItem>>() {
@Override
public void execute(PodDBAdapter adapter) {
Cursor searchResult = adapter.searchItems(feedID, query);
@@ -507,8 +476,8 @@ public final class DBTasks {
});
}
- public static FutureTask<List<Feed>> searchFeeds(final Context context, final String query) {
- return new FutureTask<>(new QueryTask<List<Feed>>(context) {
+ public static FutureTask<List<Feed>> searchFeeds(final String query) {
+ return new FutureTask<>(new QueryTask<List<Feed>>() {
@Override
public void execute(PodDBAdapter adapter) {
Cursor cursor = adapter.searchFeeds(query);
@@ -533,7 +502,7 @@ public final class DBTasks {
abstract static class QueryTask<T> implements Callable<T> {
private T result;
- public QueryTask(Context context) {
+ public QueryTask() {
}
@Override
diff --git a/core/src/main/java/de/danoeh/antennapod/core/storage/DBWriter.java b/core/src/main/java/de/danoeh/antennapod/core/storage/DBWriter.java
index af57cbdae..e572b4d8c 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/storage/DBWriter.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/storage/DBWriter.java
@@ -13,7 +13,6 @@ import org.greenrobot.eventbus.EventBus;
import java.io.File;
import java.util.ArrayList;
-import java.util.Collections;
import java.util.Date;
import java.util.List;
import java.util.Locale;
@@ -142,7 +141,7 @@ public class DBWriter {
.build();
SynchronizationQueueSink.enqueueEpisodeActionIfSynchronizationIsActive(context, action);
}
- EventBus.getDefault().post(FeedItemEvent.deletedMedia(Collections.singletonList(media.getItem())));
+ EventBus.getDefault().post(FeedItemEvent.updated(media.getItem()));
return true;
}
@@ -550,7 +549,7 @@ public class DBWriter {
adapter.addFavoriteItem(item);
adapter.close();
item.addTag(FeedItem.TAG_FAVORITE);
- EventBus.getDefault().post(FavoritesEvent.added(item));
+ EventBus.getDefault().post(new FavoritesEvent());
EventBus.getDefault().post(FeedItemEvent.updated(item));
});
}
@@ -561,7 +560,7 @@ public class DBWriter {
adapter.removeFavoriteItem(item);
adapter.close();
item.removeTag(FeedItem.TAG_FAVORITE);
- EventBus.getDefault().post(FavoritesEvent.removed(item));
+ EventBus.getDefault().post(new FavoritesEvent());
EventBus.getDefault().post(FeedItemEvent.updated(item));
});
}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/storage/FeedSearcher.java b/core/src/main/java/de/danoeh/antennapod/core/storage/FeedSearcher.java
index c3dd52b49..68ce7b7ef 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/storage/FeedSearcher.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/storage/FeedSearcher.java
@@ -1,6 +1,5 @@
package de.danoeh.antennapod.core.storage;
-import android.content.Context;
import androidx.annotation.NonNull;
import de.danoeh.antennapod.model.feed.Feed;
import de.danoeh.antennapod.model.feed.FeedItem;
@@ -19,9 +18,9 @@ public class FeedSearcher {
}
@NonNull
- public static List<FeedItem> searchFeedItems(final Context context, final String query, final long selectedFeed) {
+ public static List<FeedItem> searchFeedItems(final String query, final long selectedFeed) {
try {
- FutureTask<List<FeedItem>> itemSearchTask = DBTasks.searchFeedItems(context, selectedFeed, query);
+ FutureTask<List<FeedItem>> itemSearchTask = DBTasks.searchFeedItems(selectedFeed, query);
itemSearchTask.run();
return itemSearchTask.get();
} catch (ExecutionException | InterruptedException e) {
@@ -31,9 +30,9 @@ public class FeedSearcher {
}
@NonNull
- public static List<Feed> searchFeeds(final Context context, final String query) {
+ public static List<Feed> searchFeeds(final String query) {
try {
- FutureTask<List<Feed>> feedSearchTask = DBTasks.searchFeeds(context, query);
+ FutureTask<List<Feed>> feedSearchTask = DBTasks.searchFeeds(query);
feedSearchTask.run();
return feedSearchTask.get();
} catch (ExecutionException | InterruptedException e) {
diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/DateFormatter.java b/core/src/main/java/de/danoeh/antennapod/core/util/DateFormatter.java
index 99628dfcc..dc7ed4508 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/util/DateFormatter.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/util/DateFormatter.java
@@ -37,7 +37,7 @@ public class DateFormatter {
return android.text.format.DateUtils.formatDateTime(context, date.getTime(), format);
}
- public static String formatForAccessibility(final Context context, final Date date) {
+ public static String formatForAccessibility(final Date date) {
if (date == null) {
return "";
}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/NetworkUtils.java b/core/src/main/java/de/danoeh/antennapod/core/util/NetworkUtils.java
index 0bf301366..85be3c787 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/util/NetworkUtils.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/util/NetworkUtils.java
@@ -5,7 +5,6 @@ import android.net.ConnectivityManager;
import android.net.Network;
import android.net.NetworkCapabilities;
import android.net.NetworkInfo;
-import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import android.os.Build;
import android.text.TextUtils;
@@ -146,18 +145,6 @@ public class NetworkUtils {
return selectedNetworks.contains(Integer.toString(wm.getConnectionInfo().getNetworkId()));
}
- /**
- * Returns the SSID of the wifi connection, or <code>null</code> if there is no wifi.
- */
- public static String getWifiSsid() {
- WifiManager wifiManager = (WifiManager) context.getApplicationContext().getSystemService(Context.WIFI_SERVICE);
- WifiInfo wifiInfo = wifiManager.getConnectionInfo();
- if (wifiInfo != null) {
- return wifiInfo.getSSID();
- }
- return null;
- }
-
public static boolean wasDownloadBlocked(Throwable throwable) {
String message = throwable.getMessage();
if (message != null) {
diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/PowerUtils.java b/core/src/main/java/de/danoeh/antennapod/core/util/PowerUtils.java
index 39deea36a..a1fadb4dc 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/util/PowerUtils.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/util/PowerUtils.java
@@ -10,8 +10,6 @@ import android.os.BatteryManager;
*/
public class PowerUtils {
- private static final String TAG = "PowerUtils";
-
private PowerUtils() {
}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/widget/WidgetUpdaterJobService.java b/core/src/main/java/de/danoeh/antennapod/core/widget/WidgetUpdaterJobService.java
deleted file mode 100644
index 598544a0c..000000000
--- a/core/src/main/java/de/danoeh/antennapod/core/widget/WidgetUpdaterJobService.java
+++ /dev/null
@@ -1,33 +0,0 @@
-package de.danoeh.antennapod.core.widget;
-
-import android.content.Context;
-import android.content.Intent;
-import androidx.annotation.NonNull;
-import androidx.core.app.SafeJobIntentService;
-import de.danoeh.antennapod.core.feed.util.PlaybackSpeedUtils;
-import de.danoeh.antennapod.model.playback.Playable;
-import de.danoeh.antennapod.core.util.playback.PlayableUtils;
-import de.danoeh.antennapod.playback.base.PlayerStatus;
-
-public class WidgetUpdaterJobService extends SafeJobIntentService {
- private static final int JOB_ID = -17001;
-
- /**
- * Loads the current media from the database and updates the widget in a background job.
- */
- public static void performBackgroundUpdate(Context context) {
- enqueueWork(context, WidgetUpdaterJobService.class,
- WidgetUpdaterJobService.JOB_ID, new Intent(context, WidgetUpdaterJobService.class));
- }
-
- @Override
- protected void onHandleWork(@NonNull Intent intent) {
- Playable media = PlayableUtils.createInstanceFromPreferences(getApplicationContext());
- if (media != null) {
- WidgetUpdater.updateWidget(this, new WidgetUpdater.WidgetState(media, PlayerStatus.STOPPED,
- media.getPosition(), media.getDuration(), PlaybackSpeedUtils.getCurrentPlaybackSpeed(media)));
- } else {
- WidgetUpdater.updateWidget(this, new WidgetUpdater.WidgetState(PlayerStatus.STOPPED));
- }
- }
-} \ No newline at end of file
diff --git a/core/src/main/java/de/danoeh/antennapod/core/widget/WidgetUpdaterWorker.java b/core/src/main/java/de/danoeh/antennapod/core/widget/WidgetUpdaterWorker.java
new file mode 100644
index 000000000..3b8546a8e
--- /dev/null
+++ b/core/src/main/java/de/danoeh/antennapod/core/widget/WidgetUpdaterWorker.java
@@ -0,0 +1,59 @@
+package de.danoeh.antennapod.core.widget;
+
+import android.content.Context;
+import android.util.Log;
+
+import androidx.annotation.NonNull;
+import androidx.work.OneTimeWorkRequest;
+import androidx.work.WorkManager;
+import androidx.work.WorkRequest;
+import androidx.work.Worker;
+import androidx.work.WorkerParameters;
+
+import de.danoeh.antennapod.core.feed.util.PlaybackSpeedUtils;
+import de.danoeh.antennapod.core.util.playback.PlayableUtils;
+import de.danoeh.antennapod.model.playback.Playable;
+import de.danoeh.antennapod.playback.base.PlayerStatus;
+
+public class WidgetUpdaterWorker extends Worker {
+
+ private static final String TAG = "WidgetUpdaterWorker";
+
+ public WidgetUpdaterWorker(@NonNull final Context context,
+ @NonNull final WorkerParameters workerParams) {
+ super(context, workerParams);
+ }
+
+ public static void enqueueWork(final Context context) {
+ final WorkRequest workRequest = new OneTimeWorkRequest.Builder(WidgetUpdaterWorker.class).build();
+ WorkManager.getInstance(context).enqueue(workRequest);
+ }
+
+ @NonNull
+ @Override
+ public Result doWork() {
+ try {
+ updateWidget();
+ } catch (final Exception e) {
+ Log.d(TAG, "Failed to update AntennaPod widget: ", e);
+ return Result.failure();
+ }
+ return Result.success();
+ }
+
+ /**
+ * Loads the current media from the database and updates the widget in a background job.
+ */
+ private void updateWidget() {
+ final Playable media = PlayableUtils.createInstanceFromPreferences(getApplicationContext());
+ if (media != null) {
+ WidgetUpdater.updateWidget(getApplicationContext(),
+ new WidgetUpdater.WidgetState(media, PlayerStatus.STOPPED,
+ media.getPosition(), media.getDuration(),
+ PlaybackSpeedUtils.getCurrentPlaybackSpeed(media)));
+ } else {
+ WidgetUpdater.updateWidget(getApplicationContext(),
+ new WidgetUpdater.WidgetState(PlayerStatus.STOPPED));
+ }
+ }
+}
diff --git a/core/src/play/java/de/danoeh/antennapod/core/service/playback/WearMediaSession.java b/core/src/play/java/de/danoeh/antennapod/core/service/playback/WearMediaSession.java
index 2167d9f2c..8df05d10d 100644
--- a/core/src/play/java/de/danoeh/antennapod/core/service/playback/WearMediaSession.java
+++ b/core/src/play/java/de/danoeh/antennapod/core/service/playback/WearMediaSession.java
@@ -6,8 +6,6 @@ import android.support.v4.media.session.PlaybackStateCompat;
import android.support.wearable.media.MediaControlConstants;
public class WearMediaSession {
- public static final String TAG = "WearMediaSession";
-
static void sessionStateAddActionForWear(PlaybackStateCompat.Builder sessionState, String actionName,
CharSequence name, int icon) {
PlaybackStateCompat.CustomAction.Builder actionBuilder =