From 9b989fed432b1c9b82d7a30429f12523e3f6b145 Mon Sep 17 00:00:00 2001 From: ByteHamster Date: Mon, 3 Apr 2023 21:51:54 +0200 Subject: Target Android 13 (#6409) --- .../antennapod/core/feed/LocalFeedUpdater.java | 68 +++++++++++----------- .../download/handler/MediaDownloadedHandler.java | 5 +- 2 files changed, 35 insertions(+), 38 deletions(-) (limited to 'core') diff --git a/core/src/main/java/de/danoeh/antennapod/core/feed/LocalFeedUpdater.java b/core/src/main/java/de/danoeh/antennapod/core/feed/LocalFeedUpdater.java index 3db4bf2ab..d2a5b70fe 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/feed/LocalFeedUpdater.java +++ b/core/src/main/java/de/danoeh/antennapod/core/feed/LocalFeedUpdater.java @@ -199,48 +199,48 @@ public class LocalFeedUpdater { return item; } - private static void loadMetadata(FeedItem item, FastDocumentFile file, Context context) { - MediaMetadataRetriever mediaMetadataRetriever = new MediaMetadataRetriever(); - mediaMetadataRetriever.setDataSource(context, file.getUri()); - - String dateStr = mediaMetadataRetriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DATE); - if (!TextUtils.isEmpty(dateStr)) { - try { - SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd'T'HHmmss", Locale.getDefault()); - item.setPubDate(simpleDateFormat.parse(dateStr)); - } catch (ParseException parseException) { - Date date = DateUtils.parse(dateStr); - if (date != null) { - item.setPubDate(date); + private static void loadMetadata(FeedItem item, FastDocumentFile file, Context context) throws IOException { + try (MediaMetadataRetriever mediaMetadataRetriever = new MediaMetadataRetriever()) { + mediaMetadataRetriever.setDataSource(context, file.getUri()); + + String dateStr = mediaMetadataRetriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DATE); + if (!TextUtils.isEmpty(dateStr)) { + try { + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd'T'HHmmss", Locale.getDefault()); + item.setPubDate(simpleDateFormat.parse(dateStr)); + } catch (ParseException parseException) { + Date date = DateUtils.parse(dateStr); + if (date != null) { + item.setPubDate(date); + } } } - } - - String title = mediaMetadataRetriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_TITLE); - if (!TextUtils.isEmpty(title)) { - item.setTitle(title); - } - String durationStr = mediaMetadataRetriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION); - item.getMedia().setDuration((int) Long.parseLong(durationStr)); + String title = mediaMetadataRetriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_TITLE); + if (!TextUtils.isEmpty(title)) { + item.setTitle(title); + } - item.getMedia().setHasEmbeddedPicture(mediaMetadataRetriever.getEmbeddedPicture() != null); - mediaMetadataRetriever.close(); + String durationStr = mediaMetadataRetriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION); + item.getMedia().setDuration((int) Long.parseLong(durationStr)); - try (InputStream inputStream = context.getContentResolver().openInputStream(file.getUri())) { - Id3MetadataReader reader = new Id3MetadataReader( - new CountingInputStream(new BufferedInputStream(inputStream))); - reader.readInputStream(); - item.setDescriptionIfLonger(reader.getComment()); - } catch (IOException | ID3ReaderException e) { - Log.d(TAG, "Unable to parse ID3 of " + file.getUri() + ": " + e.getMessage()); + item.getMedia().setHasEmbeddedPicture(mediaMetadataRetriever.getEmbeddedPicture() != null); try (InputStream inputStream = context.getContentResolver().openInputStream(file.getUri())) { - VorbisCommentMetadataReader reader = new VorbisCommentMetadataReader(inputStream); + Id3MetadataReader reader = new Id3MetadataReader( + new CountingInputStream(new BufferedInputStream(inputStream))); reader.readInputStream(); - item.setDescriptionIfLonger(reader.getDescription()); - } catch (IOException | VorbisCommentReaderException e2) { - Log.d(TAG, "Unable to parse vorbis comments of " + file.getUri() + ": " + e2.getMessage()); + item.setDescriptionIfLonger(reader.getComment()); + } catch (IOException | ID3ReaderException e) { + Log.d(TAG, "Unable to parse ID3 of " + file.getUri() + ": " + e.getMessage()); + + try (InputStream inputStream = context.getContentResolver().openInputStream(file.getUri())) { + VorbisCommentMetadataReader reader = new VorbisCommentMetadataReader(inputStream); + reader.readInputStream(); + item.setDescriptionIfLonger(reader.getDescription()); + } catch (IOException | VorbisCommentReaderException e2) { + Log.d(TAG, "Unable to parse vorbis comments of " + file.getUri() + ": " + e2.getMessage()); + } } } } diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/download/handler/MediaDownloadedHandler.java b/core/src/main/java/de/danoeh/antennapod/core/service/download/handler/MediaDownloadedHandler.java index 897300ca8..c632bf1e0 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/service/download/handler/MediaDownloadedHandler.java +++ b/core/src/main/java/de/danoeh/antennapod/core/service/download/handler/MediaDownloadedHandler.java @@ -62,9 +62,8 @@ public class MediaDownloadedHandler implements Runnable { ChapterUtils.loadChaptersFromUrl(media.getItem().getPodcastIndexChapterUrl(), false); } // Get duration - MediaMetadataRetriever mmr = new MediaMetadataRetriever(); String durationStr = null; - try { + try (MediaMetadataRetriever mmr = new MediaMetadataRetriever()) { mmr.setDataSource(media.getFile_url()); durationStr = mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION); media.setDuration(Integer.parseInt(durationStr)); @@ -73,8 +72,6 @@ public class MediaDownloadedHandler implements Runnable { Log.d(TAG, "Invalid file duration: " + durationStr); } catch (Exception e) { Log.e(TAG, "Get duration failed", e); - } finally { - mmr.release(); } final FeedItem item = media.getItem(); -- cgit v1.2.3