diff --git a/app/src/main/java/com/cappielloantonio/tempo/service/MediaManager.java b/app/src/main/java/com/cappielloantonio/tempo/service/MediaManager.java index 538e1dd5..b8a6008f 100644 --- a/app/src/main/java/com/cappielloantonio/tempo/service/MediaManager.java +++ b/app/src/main/java/com/cappielloantonio/tempo/service/MediaManager.java @@ -1,6 +1,7 @@ package com.cappielloantonio.tempo.service; import android.content.ComponentName; +import android.util.Log; import androidx.annotation.NonNull; import androidx.annotation.Nullable; @@ -39,12 +40,7 @@ public class MediaManager { private static final String TAG = "MediaManager"; private static WeakReference attachedBrowserRef = new WeakReference<>(null); - /** - * Attach a Player.Listener to the MediaBrowser (once per browser instance). - * Safe to call every time you (re)create the MediaBrowser future (e.g. in Fragment.onStart()). - */ public static void registerPlaybackObserver( - LifecycleOwner lifecycleOwner, ListenableFuture browserFuture, PlaybackViewModel playbackViewModel ) { @@ -92,15 +88,11 @@ public class MediaManager { @Override public void onFailure(@NonNull Throwable t) { - // Log or handle if needed + Log.e(TAG, "Failed to get MediaBrowser instance", t); } }, MoreExecutors.directExecutor()); } - /** - * Call this when you truly want to discard the browser (e.g. Activity.onStop()). - * If fragments call it, they should accept that next onStart will recreate a browser & listener. - */ public static void onBrowserReleased(@Nullable MediaBrowser released) { MediaBrowser attached = attachedBrowserRef.get(); if (attached == released) { diff --git a/app/src/main/java/com/cappielloantonio/tempo/ui/adapter/SongHorizontalAdapter.java b/app/src/main/java/com/cappielloantonio/tempo/ui/adapter/SongHorizontalAdapter.java index f782c553..0a83e0e7 100644 --- a/app/src/main/java/com/cappielloantonio/tempo/ui/adapter/SongHorizontalAdapter.java +++ b/app/src/main/java/com/cappielloantonio/tempo/ui/adapter/SongHorizontalAdapter.java @@ -240,6 +240,7 @@ public class SongHorizontalAdapter extends RecyclerView.Adapter songs) { this.songsFull = songs != null ? songs : Collections.emptyList(); filtering.filter(currentFilter); + notifyDataSetChanged(); } @Override @@ -320,21 +321,17 @@ public class SongHorizontalAdapter extends RecyclerView.Adapter(MusicUtil.limitPlayableMedia(songs, getBindingAdapterPosition())) - ); - bundle.putInt( - Constants.ITEM_POSITION, - MusicUtil.getPlayableMediaPosition(songs, getBindingAdapterPosition()) - ); + bundle.putParcelableArrayList(Constants.TRACKS_OBJECT, new ArrayList<>(MusicUtil.limitPlayableMedia(songs, getBindingAdapterPosition()))); + bundle.putInt( Constants.ITEM_POSITION, MusicUtil.getPlayableMediaPosition(songs, getBindingAdapterPosition())); click.onMediaClick(bundle); } private boolean onLongClick() { Bundle bundle = new Bundle(); bundle.putParcelable(Constants.TRACK_OBJECT, songs.get(getBindingAdapterPosition())); + click.onMediaLongClick(bundle); + return true; } } diff --git a/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/AlbumPageFragment.java b/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/AlbumPageFragment.java index e2eb22e1..e6595e5f 100644 --- a/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/AlbumPageFragment.java +++ b/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/AlbumPageFragment.java @@ -95,7 +95,7 @@ public class AlbumPageFragment extends Fragment implements ClickCallback { initializeMediaBrowser(); - MediaManager.registerPlaybackObserver(getViewLifecycleOwner(), mediaBrowserListenableFuture, playbackViewModel); + MediaManager.registerPlaybackObserver(mediaBrowserListenableFuture, playbackViewModel); observePlayback(); } diff --git a/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/ArtistPageFragment.java b/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/ArtistPageFragment.java index ec9456cb..11b0a210 100644 --- a/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/ArtistPageFragment.java +++ b/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/ArtistPageFragment.java @@ -83,7 +83,7 @@ public class ArtistPageFragment extends Fragment implements ClickCallback { super.onStart(); initializeMediaBrowser(); - MediaManager.registerPlaybackObserver(getViewLifecycleOwner(), mediaBrowserListenableFuture, playbackViewModel); + MediaManager.registerPlaybackObserver(mediaBrowserListenableFuture, playbackViewModel); observePlayback(); } diff --git a/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/HomeTabMusicFragment.java b/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/HomeTabMusicFragment.java index b779b0fd..672dabd4 100644 --- a/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/HomeTabMusicFragment.java +++ b/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/HomeTabMusicFragment.java @@ -142,7 +142,7 @@ public class HomeTabMusicFragment extends Fragment implements ClickCallback { initializeMediaBrowser(); - MediaManager.registerPlaybackObserver(getViewLifecycleOwner(), mediaBrowserListenableFuture, playbackViewModel); + MediaManager.registerPlaybackObserver(mediaBrowserListenableFuture, playbackViewModel); observeStarredSongsPlayback(); observeTopSongsPlayback(); } diff --git a/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/PlayerQueueFragment.java b/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/PlayerQueueFragment.java index 09f91734..1686cc21 100644 --- a/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/PlayerQueueFragment.java +++ b/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/PlayerQueueFragment.java @@ -63,7 +63,7 @@ public class PlayerQueueFragment extends Fragment implements ClickCallback { initializeBrowser(); bindMediaController(); - MediaManager.registerPlaybackObserver(getViewLifecycleOwner(), mediaBrowserListenableFuture, playbackViewModel); + MediaManager.registerPlaybackObserver(mediaBrowserListenableFuture, playbackViewModel); observePlayback(); } @@ -71,6 +71,7 @@ public class PlayerQueueFragment extends Fragment implements ClickCallback { public void onResume() { super.onResume(); setMediaBrowserListenableFuture(); + updateNowPlayingItem(); } @Override @@ -216,6 +217,10 @@ public class PlayerQueueFragment extends Fragment implements ClickCallback { }); } + private void updateNowPlayingItem() { + playerSongQueueAdapter.notifyDataSetChanged(); + } + @Override public void onMediaClick(Bundle bundle) { MediaManager.startQueue(mediaBrowserListenableFuture, bundle.getParcelableArrayList(Constants.TRACKS_OBJECT), bundle.getInt(Constants.ITEM_POSITION)); diff --git a/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/PlaylistPageFragment.java b/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/PlaylistPageFragment.java index b3eb97ee..e51afc56 100644 --- a/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/PlaylistPageFragment.java +++ b/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/PlaylistPageFragment.java @@ -113,7 +113,7 @@ public class PlaylistPageFragment extends Fragment implements ClickCallback { initializeMediaBrowser(); - MediaManager.registerPlaybackObserver(getViewLifecycleOwner(), mediaBrowserListenableFuture, playbackViewModel); + MediaManager.registerPlaybackObserver(mediaBrowserListenableFuture, playbackViewModel); observePlayback(); } diff --git a/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/SearchFragment.java b/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/SearchFragment.java index 25268f0d..7136329e 100644 --- a/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/SearchFragment.java +++ b/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/SearchFragment.java @@ -77,7 +77,7 @@ public class SearchFragment extends Fragment implements ClickCallback { super.onStart(); initializeMediaBrowser(); - MediaManager.registerPlaybackObserver(getViewLifecycleOwner(), mediaBrowserListenableFuture, playbackViewModel); + MediaManager.registerPlaybackObserver(mediaBrowserListenableFuture, playbackViewModel); observePlayback(); } diff --git a/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/SongListPageFragment.java b/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/SongListPageFragment.java index 35a09d4c..db6ebe38 100644 --- a/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/SongListPageFragment.java +++ b/app/src/main/java/com/cappielloantonio/tempo/ui/fragment/SongListPageFragment.java @@ -86,7 +86,7 @@ public class SongListPageFragment extends Fragment implements ClickCallback { super.onStart(); initializeMediaBrowser(); - MediaManager.registerPlaybackObserver(getViewLifecycleOwner(), mediaBrowserListenableFuture, playbackViewModel); + MediaManager.registerPlaybackObserver(mediaBrowserListenableFuture, playbackViewModel); observePlayback(); }