summaryrefslogtreecommitdiff
path: root/core
diff options
context:
space:
mode:
Diffstat (limited to 'core')
-rw-r--r--core/build.gradle8
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/asynctask/FlattrClickWorker.java4
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/asynctask/ImageResource.java28
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/cast/RemoteMedia.java20
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/feed/Feed.java5
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/feed/FeedImage.java7
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/feed/FeedItem.java9
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/feed/FeedMedia.java28
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/glide/ApGlideModule.java5
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/glide/ApOkHttpUrlLoader.java17
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/glide/AudioCoverFetcher.java48
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/service/GpodnetSyncService.java4
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadService.java4
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackService.java10
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackServiceTaskManager.java8
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/storage/FeedSearcher.java19
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/syndication/handler/TypeGetter.java3
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/util/QueueSorter.java1
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/util/playback/ExternalMedia.java5
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/util/playback/PlaybackController.java2
-rw-r--r--core/src/main/res/values/strings.xml10
21 files changed, 140 insertions, 105 deletions
diff --git a/core/build.gradle b/core/build.gradle
index 5264e435b..31042456b 100644
--- a/core/build.gradle
+++ b/core/build.gradle
@@ -63,3 +63,11 @@ dependencies {
compile "com.android.support:mediarouter-v7:$supportVersion"
compile "com.google.android.gms:play-services-cast:$playServicesVersion"
}
+
+allprojects {
+ gradle.projectsEvaluated {
+ tasks.withType(JavaCompile) {
+ options.compilerArgs << "-Xlint" << "-Xlint:-deprecation" << "-Xlint:-serial"
+ }
+ }
+}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/asynctask/FlattrClickWorker.java b/core/src/main/java/de/danoeh/antennapod/core/asynctask/FlattrClickWorker.java
index 3ddaba52e..d991006e5 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/asynctask/FlattrClickWorker.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/asynctask/FlattrClickWorker.java
@@ -106,7 +106,7 @@ public class FlattrClickWorker extends AsyncTask<Void, Integer, FlattrClickWorke
return ExitCode.NO_THINGS;
}
- List<Future> dbFutures = new LinkedList<>();
+ List<Future<?>> dbFutures = new LinkedList<>();
for (FlattrThing thing : flattrQueue) {
if (BuildConfig.DEBUG) Log.d(TAG, "Processing " + thing.getTitle());
@@ -131,7 +131,7 @@ public class FlattrClickWorker extends AsyncTask<Void, Integer, FlattrClickWorke
}
}
- for (Future f : dbFutures) {
+ for (Future<?> f : dbFutures) {
try {
f.get();
} catch (InterruptedException | ExecutionException e) {
diff --git a/core/src/main/java/de/danoeh/antennapod/core/asynctask/ImageResource.java b/core/src/main/java/de/danoeh/antennapod/core/asynctask/ImageResource.java
index 992321441..b01e3f3ba 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/asynctask/ImageResource.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/asynctask/ImageResource.java
@@ -1,7 +1,5 @@
package de.danoeh.antennapod.core.asynctask;
-import android.net.Uri;
-
/**
* Classes that implement this interface provide access to an image resource that can
* be loaded by the Picasso library.
@@ -9,29 +7,9 @@ import android.net.Uri;
public interface ImageResource {
/**
- * This scheme should be used by PicassoImageResources to
- * indicate that the image Uri points to a file that is not an image
- * (e.g. a media file). This workaround is needed so that the Picasso library
- * loads these Uri with a Downloader instead of trying to load it directly.
- * <p/>
- * For example implementations, see FeedMedia or ExternalMedia.
- */
- String SCHEME_MEDIA = "media";
-
-
- /**
- * Parameter key for an encoded fallback Uri. This Uri MUST point to a local image file
- */
- String PARAM_FALLBACK = "fallback";
-
- /**
- * Returns a Uri to the image or null if no image is available.
- * <p/>
- * The Uri can either be an HTTP-URL, a URL pointing to a local image file or
- * a non-image file (see SCHEME_MEDIA for more details).
+ * Returns the location of the image or null if no image is available.
* <p/>
- * The Uri can also have an optional fallback-URL if loading the default URL
- * failed (see PARAM_FALLBACK).
+ * The location can either be an URL or a local path
*/
- Uri getImageUri();
+ String getImageLocation();
}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/cast/RemoteMedia.java b/core/src/main/java/de/danoeh/antennapod/core/cast/RemoteMedia.java
index 99f7b9496..e2d8f8ad5 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/cast/RemoteMedia.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/cast/RemoteMedia.java
@@ -4,6 +4,7 @@ import android.content.SharedPreferences;
import android.net.Uri;
import android.os.Parcel;
import android.os.Parcelable;
+import android.support.annotation.Nullable;
import android.text.TextUtils;
import com.google.android.gms.cast.MediaInfo;
@@ -24,6 +25,8 @@ import de.danoeh.antennapod.core.storage.DBReader;
import de.danoeh.antennapod.core.util.ChapterUtils;
import de.danoeh.antennapod.core.util.playback.Playable;
+import org.apache.commons.lang3.builder.HashCodeBuilder;
+
/**
* Playable implementation for media on a Cast Device for which a local version of
* {@link de.danoeh.antennapod.core.feed.FeedMedia} hasn't been found.
@@ -267,11 +270,9 @@ public class RemoteMedia implements Playable {
}
@Override
- public Uri getImageUri() {
- if (imageUrl != null) {
- return Uri.parse(imageUrl);
- }
- return null;
+ @Nullable
+ public String getImageLocation() {
+ return imageUrl;
}
@Override
@@ -344,4 +345,13 @@ public class RemoteMedia implements Playable {
}
return false;
}
+
+ @Override
+ public int hashCode() {
+ return new HashCodeBuilder()
+ .append(downloadUrl)
+ .append(feedUrl)
+ .append(itemIdentifier)
+ .toHashCode();
+ }
}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/feed/Feed.java b/core/src/main/java/de/danoeh/antennapod/core/feed/Feed.java
index 67ac2d280..bb0724d66 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/feed/Feed.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/feed/Feed.java
@@ -2,7 +2,6 @@ package de.danoeh.antennapod.core.feed;
import android.content.Context;
import android.database.Cursor;
-import android.net.Uri;
import android.support.annotation.Nullable;
import android.text.TextUtils;
@@ -501,9 +500,9 @@ public class Feed extends FeedFile implements FlattrThing, ImageResource {
}
@Override
- public Uri getImageUri() {
+ public String getImageLocation() {
if (image != null) {
- return image.getImageUri();
+ return image.getImageLocation();
} else {
return null;
}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/feed/FeedImage.java b/core/src/main/java/de/danoeh/antennapod/core/feed/FeedImage.java
index bd7ceb54f..f0c508830 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/feed/FeedImage.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/feed/FeedImage.java
@@ -1,7 +1,6 @@
package de.danoeh.antennapod.core.feed;
import android.database.Cursor;
-import android.net.Uri;
import java.io.File;
@@ -81,11 +80,11 @@ public class FeedImage extends FeedFile implements ImageResource {
}
@Override
- public Uri getImageUri() {
+ public String getImageLocation() {
if (file_url != null && downloaded) {
- return Uri.fromFile(new File(file_url));
+ return new File(file_url).getAbsolutePath();
} else if(download_url != null) {
- return Uri.parse(download_url);
+ return download_url;
} else {
return null;
}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/feed/FeedItem.java b/core/src/main/java/de/danoeh/antennapod/core/feed/FeedItem.java
index 4921c0576..8627bcda8 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/feed/FeedItem.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/feed/FeedItem.java
@@ -1,7 +1,6 @@
package de.danoeh.antennapod.core.feed;
import android.database.Cursor;
-import android.net.Uri;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
@@ -374,13 +373,13 @@ public class FeedItem extends FeedComponent implements ShownotesProvider, Flattr
}
@Override
- public Uri getImageUri() {
+ public String getImageLocation() {
if(media != null && media.hasEmbeddedPicture()) {
- return media.getImageUri();
+ return media.getImageLocation();
} else if (image != null) {
- return image.getImageUri();
+ return image.getImageLocation();
} else if (feed != null) {
- return feed.getImageUri();
+ return feed.getImageLocation();
} else {
return null;
}
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 7f064fff3..068669af9 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
@@ -4,7 +4,6 @@ import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.database.Cursor;
import android.media.MediaMetadataRetriever;
-import android.net.Uri;
import android.os.Parcel;
import android.os.Parcelable;
import android.support.annotation.Nullable;
@@ -321,12 +320,10 @@ public class FeedMedia extends FeedFile implements Playable {
}
public boolean hasEmbeddedPicture() {
- return false;
- // TODO: reenable!
- //if(hasEmbeddedPicture == null) {
- // checkEmbeddedPicture();
- //}
- //return hasEmbeddedPicture;
+ if(hasEmbeddedPicture == null) {
+ checkEmbeddedPicture();
+ }
+ return hasEmbeddedPicture;
}
@Override
@@ -514,20 +511,11 @@ public class FeedMedia extends FeedFile implements Playable {
};
@Override
- public Uri getImageUri() {
+ public String getImageLocation() {
if (hasEmbeddedPicture()) {
- Uri.Builder builder = new Uri.Builder();
- builder.scheme(SCHEME_MEDIA).encodedPath(getLocalMediaUrl());
-
- if (item != null && item.getFeed() != null) {
- final Uri feedImgUri = item.getFeed().getImageUri();
- if (feedImgUri != null) {
- builder.appendQueryParameter(PARAM_FALLBACK, feedImgUri.toString());
- }
- }
- return builder.build();
+ return getLocalMediaUrl();
} else if(item != null) {
- return item.getImageUri();
+ return item.getImageLocation();
} else {
return null;
}
@@ -550,7 +538,7 @@ public class FeedMedia extends FeedFile implements Playable {
super.setFile_url(file_url);
}
- private void checkEmbeddedPicture() {
+ public void checkEmbeddedPicture() {
if (!localFileAvailable()) {
hasEmbeddedPicture = Boolean.FALSE;
return;
diff --git a/core/src/main/java/de/danoeh/antennapod/core/glide/ApGlideModule.java b/core/src/main/java/de/danoeh/antennapod/core/glide/ApGlideModule.java
index 0baff9723..835dee735 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/glide/ApGlideModule.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/glide/ApGlideModule.java
@@ -6,7 +6,6 @@ import com.bumptech.glide.Glide;
import com.bumptech.glide.GlideBuilder;
import com.bumptech.glide.load.DecodeFormat;
import com.bumptech.glide.load.engine.cache.InternalCacheDiskCacheFactory;
-import com.bumptech.glide.load.model.GlideUrl;
import com.bumptech.glide.module.GlideModule;
import java.io.InputStream;
@@ -27,7 +26,7 @@ public class ApGlideModule implements GlideModule {
@Override
public void registerComponents(Context context, Glide glide) {
- glide.register(GlideUrl.class, InputStream.class, new ApOkHttpUrlLoader.Factory());
+ glide.register(String.class, InputStream.class, new ApOkHttpUrlLoader.Factory());
}
-} \ No newline at end of file
+}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/glide/ApOkHttpUrlLoader.java b/core/src/main/java/de/danoeh/antennapod/core/glide/ApOkHttpUrlLoader.java
index 513264a05..d67db198d 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/glide/ApOkHttpUrlLoader.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/glide/ApOkHttpUrlLoader.java
@@ -26,14 +26,14 @@ import de.danoeh.antennapod.core.util.NetworkUtils;
/**
* @see com.bumptech.glide.integration.okhttp.OkHttpUrlLoader
*/
-public class ApOkHttpUrlLoader implements ModelLoader<GlideUrl, InputStream> {
+public class ApOkHttpUrlLoader implements ModelLoader<String, InputStream> {
private static final String TAG = ApOkHttpUrlLoader.class.getSimpleName();
/**
* The default factory for {@link ApOkHttpUrlLoader}s.
*/
- public static class Factory implements ModelLoaderFactory<GlideUrl, InputStream> {
+ public static class Factory implements ModelLoaderFactory<String, InputStream> {
private static volatile OkHttpClient internalClient;
private OkHttpClient client;
@@ -66,7 +66,7 @@ public class ApOkHttpUrlLoader implements ModelLoader<GlideUrl, InputStream> {
}
@Override
- public ModelLoader<GlideUrl, InputStream> build(Context context, GenericLoaderFactory factories) {
+ public ModelLoader<String, InputStream> build(Context context, GenericLoaderFactory factories) {
return new ApOkHttpUrlLoader(client);
}
@@ -83,8 +83,15 @@ public class ApOkHttpUrlLoader implements ModelLoader<GlideUrl, InputStream> {
}
@Override
- public DataFetcher<InputStream> getResourceFetcher(GlideUrl model, int width, int height) {
- return new OkHttpStreamFetcher(client, model);
+ public DataFetcher<InputStream> getResourceFetcher(String model, int width, int height) {
+ Log.d(TAG, "getResourceFetcher() called with: " + "model = [" + model + "], width = ["
+ + width + "], height = [" + height + "]");
+ if(model.startsWith("/")) {
+ return new AudioCoverFetcher(model);
+ } else {
+ GlideUrl url = new GlideUrl(model);
+ return new OkHttpStreamFetcher(client, url);
+ }
}
private static class NetworkAllowanceInterceptor implements Interceptor {
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
new file mode 100644
index 000000000..48dadc492
--- /dev/null
+++ b/core/src/main/java/de/danoeh/antennapod/core/glide/AudioCoverFetcher.java
@@ -0,0 +1,48 @@
+package de.danoeh.antennapod.core.glide;
+
+import android.media.MediaMetadataRetriever;
+import android.util.Log;
+
+import com.bumptech.glide.Priority;
+import com.bumptech.glide.load.data.DataFetcher;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+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;
+
+ public AudioCoverFetcher(String path) {
+ this.path = path;
+ }
+
+ @Override public String getId() {
+ return path;
+ }
+
+ @Override public InputStream loadData(Priority priority) throws Exception {
+ MediaMetadataRetriever retriever = new MediaMetadataRetriever();
+ try {
+ retriever.setDataSource(path);
+ byte[] picture = retriever.getEmbeddedPicture();
+ if (picture != null) {
+ return new ByteArrayInputStream(picture);
+ }
+ } finally {
+ retriever.release();
+ }
+ throw new IOException("Loading embedded cover did not work");
+ }
+
+ @Override public void cleanup() {
+ // nothing to clean up
+ }
+ @Override public void cancel() {
+ // cannot cancel
+ }
+}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/GpodnetSyncService.java b/core/src/main/java/de/danoeh/antennapod/core/service/GpodnetSyncService.java
index 9704d2111..160ba487b 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/service/GpodnetSyncService.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/service/GpodnetSyncService.java
@@ -232,7 +232,7 @@ public class GpodnetSyncService extends Service {
}
Map<Pair<String, String>, GpodnetEpisodeAction> localMostRecentPlayAction = new ArrayMap<>();
for(GpodnetEpisodeAction action : localActions) {
- Pair key = new Pair(action.getPodcast(), action.getEpisode());
+ Pair<String, String> key = new Pair<>(action.getPodcast(), action.getEpisode());
GpodnetEpisodeAction mostRecent = localMostRecentPlayAction.get(key);
if (mostRecent == null || mostRecent.getTimestamp() == null) {
localMostRecentPlayAction.put(key, action);
@@ -256,7 +256,7 @@ public class GpodnetSyncService extends Service {
case DOWNLOAD:
break;
case PLAY:
- Pair key = new Pair(action.getPodcast(), action.getEpisode());
+ Pair<String, String> key = new Pair<>(action.getPodcast(), action.getEpisode());
GpodnetEpisodeAction localMostRecent = localMostRecentPlayAction.get(key);
if(localMostRecent == null ||
localMostRecent.getTimestamp() == null ||
diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadService.java b/core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadService.java
index 00b0e6db3..f773cdf2a 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadService.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadService.java
@@ -145,7 +145,7 @@ public class DownloadService extends Service {
private Handler handler;
private NotificationUpdater notificationUpdater;
- private ScheduledFuture notificationUpdaterFuture;
+ private ScheduledFuture<?> notificationUpdaterFuture;
private static final int SCHED_EX_POOL_SIZE = 1;
private ScheduledThreadPoolExecutor schedExecutor;
@@ -1009,7 +1009,7 @@ public class DownloadService extends Service {
}
media.setDownloaded(true);
media.setFile_url(request.getDestination());
- media.setHasEmbeddedPicture(null);
+ media.checkEmbeddedPicture(); // enforce check
// check if file has chapters
ChapterUtils.loadChaptersFromFileUrl(media);
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 e6d41879c..e2d63a385 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
@@ -990,12 +990,12 @@ public class PlaybackService extends Service {
builder.putString(MediaMetadataCompat.METADATA_KEY_DISPLAY_TITLE, p.getEpisodeTitle());
builder.putString(MediaMetadataCompat.METADATA_KEY_ALBUM, p.getFeedTitle());
- if (p.getImageUri() != null && UserPreferences.setLockscreenBackground()) {
- builder.putString(MediaMetadataCompat.METADATA_KEY_ART_URI, p.getImageUri().toString());
+ if (p.getImageLocation() != null && UserPreferences.setLockscreenBackground()) {
+ builder.putString(MediaMetadataCompat.METADATA_KEY_ART_URI, p.getImageLocation().toString());
try {
if (isCasting) {
Bitmap art = Glide.with(this)
- .load(p.getImageUri())
+ .load(p.getImageLocation())
.asBitmap()
.diskCacheStrategy(ApGlideSettings.AP_DISK_CACHE_STRATEGY)
.into(Target.SIZE_ORIGINAL, Target.SIZE_ORIGINAL)
@@ -1005,7 +1005,7 @@ public class PlaybackService extends Service {
WindowManager wm = (WindowManager) getSystemService(Context.WINDOW_SERVICE);
Display display = wm.getDefaultDisplay();
Bitmap art = Glide.with(this)
- .load(p.getImageUri())
+ .load(p.getImageLocation())
.asBitmap()
.diskCacheStrategy(ApGlideSettings.AP_DISK_CACHE_STRATEGY)
.centerCrop()
@@ -1054,7 +1054,7 @@ public class PlaybackService extends Service {
android.R.dimen.notification_large_icon_width);
try {
icon = Glide.with(PlaybackService.this)
- .load(info.playable.getImageUri())
+ .load(info.playable.getImageLocation())
.asBitmap()
.diskCacheStrategy(ApGlideSettings.AP_DISK_CACHE_STRATEGY)
.centerCrop()
diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackServiceTaskManager.java b/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackServiceTaskManager.java
index 8a0964d36..7fd7602a8 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackServiceTaskManager.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackServiceTaskManager.java
@@ -42,11 +42,11 @@ public class PlaybackServiceTaskManager {
private static final int SCHED_EX_POOL_SIZE = 2;
private final ScheduledThreadPoolExecutor schedExecutor;
- private ScheduledFuture positionSaverFuture;
- private ScheduledFuture widgetUpdaterFuture;
- private ScheduledFuture sleepTimerFuture;
+ private ScheduledFuture<?> positionSaverFuture;
+ private ScheduledFuture<?> widgetUpdaterFuture;
+ private ScheduledFuture<?> sleepTimerFuture;
private volatile Future<List<FeedItem>> queueFuture;
- private volatile Future chapterLoaderFuture;
+ private volatile Future<?> chapterLoaderFuture;
private SleepTimer sleepTimer;
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 d7c9e9108..b88d774a2 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
@@ -33,15 +33,18 @@ public class FeedSearcher {
List<SearchResult> result = new ArrayList<>();
- FutureTask<List<FeedItem>>[] tasks = new FutureTask[4];
- (tasks[0] = DBTasks.searchFeedItemContentEncoded(context, selectedFeed, query)).run();
- (tasks[1] = DBTasks.searchFeedItemDescription(context, selectedFeed, query)).run();
- (tasks[2] = DBTasks.searchFeedItemChapters(context, selectedFeed, query)).run();
- (tasks[3] = DBTasks.searchFeedItemTitle(context, selectedFeed, query)).run();
+ List<FutureTask<List<FeedItem>>> tasks = new ArrayList<>();
+ tasks.add(DBTasks.searchFeedItemContentEncoded(context, selectedFeed, query));
+ tasks.add(DBTasks.searchFeedItemDescription(context, selectedFeed, query));
+ tasks.add(DBTasks.searchFeedItemChapters(context, selectedFeed, query));
+ tasks.add(DBTasks.searchFeedItemTitle(context, selectedFeed, query));
+ for (FutureTask<List<FeedItem>> task : tasks) {
+ task.run();
+ }
try {
- for (int i = 0; i < tasks.length; i++) {
- FutureTask task = tasks[i];
- List<FeedItem> items = (List<FeedItem>) task.get();
+ for (int i = 0; i < tasks.size(); i++) {
+ FutureTask<List<FeedItem>> task = tasks.get(i);
+ List<FeedItem> items = task.get();
for (FeedItem item : items) {
result.add(new SearchResult(item, values[i], subtitles[i]));
}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/syndication/handler/TypeGetter.java b/core/src/main/java/de/danoeh/antennapod/core/syndication/handler/TypeGetter.java
index f84d6ee96..a086d6632 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/syndication/handler/TypeGetter.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/syndication/handler/TypeGetter.java
@@ -78,9 +78,8 @@ public class TypeGetter {
}
} catch (IOException e1) {
e1.printStackTrace();
- } finally {
- throw new UnsupportedFeedtypeException(Type.INVALID, rootElement);
}
+ throw new UnsupportedFeedtypeException(Type.INVALID, rootElement);
} catch (IOException e) {
e.printStackTrace();
diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/QueueSorter.java b/core/src/main/java/de/danoeh/antennapod/core/util/QueueSorter.java
index 5dc194dbd..a17ecb124 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/util/QueueSorter.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/util/QueueSorter.java
@@ -59,6 +59,7 @@ public class QueueSorter {
return -1 * (duration1 - duration2);
};
+ break;
default:
}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/playback/ExternalMedia.java b/core/src/main/java/de/danoeh/antennapod/core/util/playback/ExternalMedia.java
index 412a27b95..a37f98469 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/util/playback/ExternalMedia.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/util/playback/ExternalMedia.java
@@ -3,7 +3,6 @@ package de.danoeh.antennapod.core.util.playback;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.media.MediaMetadataRetriever;
-import android.net.Uri;
import android.os.Parcel;
import android.os.Parcelable;
@@ -242,9 +241,9 @@ public class ExternalMedia implements Playable {
};
@Override
- public Uri getImageUri() {
+ public String getImageLocation() {
if (localFileAvailable()) {
- return new Uri.Builder().scheme(SCHEME_MEDIA).encodedPath(getLocalMediaUrl()).build();
+ return getLocalMediaUrl();
} else {
return null;
}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/playback/PlaybackController.java b/core/src/main/java/de/danoeh/antennapod/core/util/playback/PlaybackController.java
index 041831e80..c0b417b81 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/util/playback/PlaybackController.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/util/playback/PlaybackController.java
@@ -65,7 +65,7 @@ public abstract class PlaybackController {
private static final int SCHED_EX_POOLSIZE = 1;
private MediaPositionObserver positionObserver;
- private ScheduledFuture positionObserverFuture;
+ private ScheduledFuture<?> positionObserverFuture;
private boolean mediaInfoLoaded = false;
private boolean released = false;
diff --git a/core/src/main/res/values/strings.xml b/core/src/main/res/values/strings.xml
index e31d60ce8..7e0982294 100644
--- a/core/src/main/res/values/strings.xml
+++ b/core/src/main/res/values/strings.xml
@@ -328,7 +328,7 @@
<string name="pref_flattr_this_app_sum">Support the development of AntennaPod by flattring it. Thanks!</string>
<string name="pref_revokeAccess_title">Revoke access</string>
<string name="pref_revokeAccess_sum">Revoke the access permission to your flattr account for this app.</string>
- <string name="pref_auto_flattr_title">Automatic Flattr</string>
+ <string name="pref_auto_flattr_title">Automatic Flattr</string>
<string name="pref_auto_flattr_sum">Configure automatic flattring</string>
<string name="user_interface_label">User Interface</string>
<string name="pref_set_theme_title">Select Theme</string>
@@ -352,9 +352,9 @@
<string name="pref_theme_title_light">Light</string>
<string name="pref_theme_title_dark">Dark</string>
<string name="pref_episode_cache_unlimited">Unlimited</string>
- <string name="pref_update_interval_hours_plural">hours</string>
- <string name="pref_update_interval_hours_singular">hour</string>
- <string name="pref_update_interval_hours_manual">Manual</string>
+ <string name="pref_update_interval_hours_plural">hours</string>
+ <string name="pref_update_interval_hours_singular">hour</string>
+ <string name="pref_update_interval_hours_manual">Manual</string>
<string name="pref_gpodnet_authenticate_title">Login</string>
<string name="pref_gpodnet_authenticate_sum">Login with your gpodder.net account in order to sync your subscriptions.</string>
<string name="pref_gpodnet_logout_title">Logout</string>
@@ -379,8 +379,6 @@
<string name="pref_compact_notification_buttons_sum">Change the playback buttons on the lockscreen. The play/pause button is always included.</string>
<string name="pref_compact_notification_buttons_dialog_title">Select a maximum of %1$d items</string>
<string name="pref_compact_notification_buttons_dialog_error">You can only select a maximum of %1$d items.</string>
- <string name="pref_show_subscriptions_in_drawer_title">Show Subscriptions</string>
- <string name="pref_show_subscriptions_in_drawer_sum">Show subscription list directly in navigation drawer</string>
<string name="pref_lockscreen_background_title">Set Lockscreen Background</string>
<string name="pref_lockscreen_background_sum">Set the lockscreen background to the current episode\'s image. As a side effect, this will also show the image in third party apps.</string>
<string name="pref_showDownloadReport_title">Show Download Report</string>