Fix MediaMetadataRetriever on API<29

On SDK<29, this class does not have a close method yet, so the app crashes when using try-with-resources.
This commit is contained in:
ByteHamster
2023-07-18 17:01:22 +02:00
committed by ByteHamster
parent 9be6562b4e
commit 9f8edd0e9d
5 changed files with 28 additions and 9 deletions

View File

@ -0,0 +1,18 @@
package de.danoeh.antennapod.model;
import android.media.MediaMetadataRetriever;
import java.io.IOException;
/**
* On SDK<29, this class does not have a close method yet, so the app crashes when using try-with-resources.
*/
public class MediaMetadataRetrieverCompat extends MediaMetadataRetriever {
public void close() {
try {
release();
} catch (IOException e) {
e.printStackTrace();
}
}
}

View File

@ -2,13 +2,13 @@ package de.danoeh.antennapod.model.feed;
import android.content.Context;
import android.content.SharedPreferences.Editor;
import android.media.MediaMetadataRetriever;
import android.net.Uri;
import android.os.Parcel;
import android.os.Parcelable;
import androidx.annotation.Nullable;
import android.support.v4.media.MediaBrowserCompat;
import android.support.v4.media.MediaDescriptionCompat;
import de.danoeh.antennapod.model.MediaMetadataRetrieverCompat;
import de.danoeh.antennapod.model.playback.MediaType;
import de.danoeh.antennapod.model.playback.Playable;
import de.danoeh.antennapod.model.playback.RemoteMedia;
@ -458,11 +458,10 @@ public class FeedMedia extends FeedFile implements Playable {
hasEmbeddedPicture = Boolean.FALSE;
return;
}
MediaMetadataRetriever mmr = new MediaMetadataRetriever();
try {
try (MediaMetadataRetrieverCompat mmr = new MediaMetadataRetrieverCompat()) {
mmr.setDataSource(getLocalMediaUrl());
byte[] image = mmr.getEmbeddedPicture();
if(image != null) {
if (image != null) {
hasEmbeddedPicture = Boolean.TRUE;
} else {
hasEmbeddedPicture = Boolean.FALSE;