diff --git a/app/src/main/java/com/cappielloantonio/play/adapter/DiscoverSongAdapter.java b/app/src/main/java/com/cappielloantonio/play/adapter/DiscoverSongAdapter.java index 583e8e2b..846fc124 100644 --- a/app/src/main/java/com/cappielloantonio/play/adapter/DiscoverSongAdapter.java +++ b/app/src/main/java/com/cappielloantonio/play/adapter/DiscoverSongAdapter.java @@ -10,6 +10,7 @@ import android.widget.ImageView; import android.widget.TextView; import androidx.annotation.NonNull; +import androidx.media3.session.MediaBrowser; import androidx.recyclerview.widget.RecyclerView; import com.cappielloantonio.play.App; @@ -19,8 +20,10 @@ import com.cappielloantonio.play.interfaces.MediaCallback; import com.cappielloantonio.play.model.Song; import com.cappielloantonio.play.repository.QueueRepository; import com.cappielloantonio.play.repository.SongRepository; +import com.cappielloantonio.play.service.MediaManager; import com.cappielloantonio.play.ui.activity.MainActivity; import com.cappielloantonio.play.util.MusicUtil; +import com.google.common.util.concurrent.ListenableFuture; import java.util.ArrayList; import java.util.List; @@ -31,6 +34,7 @@ public class DiscoverSongAdapter extends RecyclerView.Adapter mediaBrowserListenableFuture; private List songs; @@ -77,6 +81,10 @@ public class DiscoverSongAdapter extends RecyclerView.Adapter mediaBrowserListenableFuture) { + this.mediaBrowserListenableFuture = mediaBrowserListenableFuture; + } + public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener { TextView textTitle; TextView textAlbum; @@ -94,15 +102,7 @@ public class DiscoverSongAdapter extends RecyclerView.Adapter opener = new ArrayList<>(); - opener.add(songs.get(getBindingAdapterPosition())); - // MusicPlayerRemote.openQueue(opener, 0, true); - - QueueRepository queueRepository = new QueueRepository(App.getInstance()); - queueRepository.insertAllAndStartNew(opener); - - activity.setBottomSheetInPeek(true); - // activity.setBottomSheetMusicInfo(songs.get(getBindingAdapterPosition())); + MediaManager.startQueue(mediaBrowserListenableFuture, context, songs.get(getBindingAdapterPosition())); SongRepository songRepository = new SongRepository(App.getInstance()); songRepository.getInstantMix(songs.get(getBindingAdapterPosition()), 20, new MediaCallback() { @@ -113,7 +113,7 @@ public class DiscoverSongAdapter extends RecyclerView.Adapter media) { - //MusicPlayerRemote.enqueue((List) media); + MediaManager.enqueue(mediaBrowserListenableFuture, context, (List) media, songs.size()); } }); } diff --git a/app/src/main/java/com/cappielloantonio/play/adapter/SimilarTrackAdapter.java b/app/src/main/java/com/cappielloantonio/play/adapter/SimilarTrackAdapter.java index 34b386f8..aeea92cf 100644 --- a/app/src/main/java/com/cappielloantonio/play/adapter/SimilarTrackAdapter.java +++ b/app/src/main/java/com/cappielloantonio/play/adapter/SimilarTrackAdapter.java @@ -1,6 +1,5 @@ package com.cappielloantonio.play.adapter; -import android.annotation.SuppressLint; import android.content.Context; import android.os.Bundle; import android.util.Log; @@ -11,18 +10,20 @@ import android.widget.ImageView; import android.widget.TextView; import androidx.annotation.NonNull; -import androidx.media3.session.MediaController; +import androidx.media3.session.MediaBrowser; import androidx.navigation.Navigation; import androidx.recyclerview.widget.RecyclerView; import com.bumptech.glide.load.resource.bitmap.RoundedCorners; +import com.cappielloantonio.play.App; import com.cappielloantonio.play.R; import com.cappielloantonio.play.glide.CustomGlideRequest; +import com.cappielloantonio.play.interfaces.MediaCallback; import com.cappielloantonio.play.model.Song; -import com.cappielloantonio.play.ui.activity.MainActivity; -import com.cappielloantonio.play.util.MappingUtil; +import com.cappielloantonio.play.repository.SongRepository; +import com.cappielloantonio.play.service.MediaManager; import com.cappielloantonio.play.util.MusicUtil; -import com.google.common.util.concurrent.MoreExecutors; +import com.google.common.util.concurrent.ListenableFuture; import java.util.ArrayList; import java.util.List; @@ -30,14 +31,13 @@ import java.util.List; public class SimilarTrackAdapter extends RecyclerView.Adapter { private static final String TAG = "SimilarTrackAdapter"; - private final MainActivity mainActivity; private final Context context; private final LayoutInflater mInflater; + private ListenableFuture mediaBrowserListenableFuture; private List songs; - public SimilarTrackAdapter(MainActivity mainActivity, Context context) { - this.mainActivity = mainActivity; + public SimilarTrackAdapter(Context context) { this.context = context; this.mInflater = LayoutInflater.from(context); this.songs = new ArrayList<>(); @@ -68,12 +68,19 @@ public class SimilarTrackAdapter extends RecyclerView.Adapter songs) { this.songs = songs; notifyDataSetChanged(); } - @SuppressLint("UnsafeOptInUsageError") + public void setMediaBrowserListenableFuture(ListenableFuture mediaBrowserListenableFuture) { + this.mediaBrowserListenableFuture = mediaBrowserListenableFuture; + } + public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener, View.OnLongClickListener { TextView textTitle; ImageView cover; @@ -90,31 +97,9 @@ public class SimilarTrackAdapter extends RecyclerView.Adapter opener = new ArrayList<>(); - // opener.add(songs.get(getBindingAdapterPosition())); - // MusicPlayerRemote.openQueue(opener, 0, true); + MediaManager.startQueue(mediaBrowserListenableFuture, context, songs.get(getBindingAdapterPosition())); - // MediaManager.startQueue(mainActivity.getMediaControllerInstance(), MappingUtil.mapMediaItem(context, opener), opener); - - mainActivity.mediaControllerListenableFuture.addListener(() -> { - try { - if (mainActivity.mediaControllerListenableFuture.isDone()) { - MediaController mediaController = mainActivity.mediaControllerListenableFuture.get(); - - mediaController.setMediaItem(MappingUtil.mapMediaItem(context, songs.get(getBindingAdapterPosition()))); - } - } catch (Exception e) { - Log.e(TAG, e.getMessage()); - } - }, MoreExecutors.directExecutor()); - - // QueueRepository queueRepository = new QueueRepository(App.getInstance()); - // queueRepository.insertAllAndStartNew(opener); - - mainActivity.setBottomSheetInPeek(true); - // mainActivity.setBottomSheetMusicInfo(songs.get(getBindingAdapterPosition())); - - /*SongRepository songRepository = new SongRepository(App.getInstance()); + SongRepository songRepository = new SongRepository(App.getInstance()); songRepository.getInstantMix(songs.get(getBindingAdapterPosition()), 20, new MediaCallback() { @Override public void onError(Exception exception) { @@ -123,10 +108,9 @@ public class SimilarTrackAdapter extends RecyclerView.Adapter media) { - // MusicPlayerRemote.enqueue((List) media); - MediaManager.enqueue(mainActivity.getMediaControllerInstance(), MappingUtil.mapMediaItem(context, (List) media), (List) media); + MediaManager.enqueue(mediaBrowserListenableFuture, context, (List) media, songs.size()); } - });*/ + }); } @Override diff --git a/app/src/main/java/com/cappielloantonio/play/adapter/SongHorizontalAdapter.java b/app/src/main/java/com/cappielloantonio/play/adapter/SongHorizontalAdapter.java index 7fbaae56..06aa6227 100644 --- a/app/src/main/java/com/cappielloantonio/play/adapter/SongHorizontalAdapter.java +++ b/app/src/main/java/com/cappielloantonio/play/adapter/SongHorizontalAdapter.java @@ -9,6 +9,7 @@ import android.widget.ImageView; import android.widget.TextView; import androidx.annotation.NonNull; +import androidx.media3.session.MediaBrowser; import androidx.navigation.Navigation; import androidx.recyclerview.widget.RecyclerView; @@ -18,9 +19,11 @@ import com.cappielloantonio.play.R; import com.cappielloantonio.play.glide.CustomGlideRequest; import com.cappielloantonio.play.model.Song; import com.cappielloantonio.play.repository.QueueRepository; +import com.cappielloantonio.play.service.MediaManager; import com.cappielloantonio.play.ui.activity.MainActivity; import com.cappielloantonio.play.util.DownloadUtil; import com.cappielloantonio.play.util.MusicUtil; +import com.google.common.util.concurrent.ListenableFuture; import java.util.ArrayList; import java.util.List; @@ -33,6 +36,7 @@ public class SongHorizontalAdapter extends RecyclerView.Adapter mediaBrowserListenableFuture; private List songs; public SongHorizontalAdapter(MainActivity mainActivity, Context context, boolean isCoverVisible) { @@ -85,6 +89,10 @@ public class SongHorizontalAdapter extends RecyclerView.Adapter mediaBrowserListenableFuture) { + this.mediaBrowserListenableFuture = mediaBrowserListenableFuture; + } + public Song getItem(int id) { return songs.get(id); } @@ -120,13 +128,7 @@ public class SongHorizontalAdapter extends RecyclerView.Adapter { if (songs == null) {