From a32c39867fc75d6468b712a68b26b3808db9f9cb Mon Sep 17 00:00:00 2001 From: CappielloAntonio Date: Wed, 29 Dec 2021 10:22:10 +0100 Subject: [PATCH] Deleted all references from the adapters and dialogs to the old queue management system --- .../play/adapter/DiscoverSongAdapter.java | 7 +- .../play/adapter/PlayerSongQueueAdapter.java | 14 +- .../play/adapter/SimilarTrackAdapter.java | 43 ++- .../play/adapter/SongHorizontalAdapter.java | 9 +- .../play/adapter/TrackAdapter.java | 5 +- .../play/repository/QueueRepository.java | 8 + .../play/ui/activity/MainActivity.java | 34 +- .../play/ui/dialog/StarredSyncDialog.java | 2 +- .../play/ui/fragment/AlbumPageFragment.java | 11 +- .../play/ui/fragment/ArtistPageFragment.java | 7 +- .../fragment/PlayerBottomSheetFragment.java | 322 ++++++++---------- .../play/ui/fragment/PlayerCoverFragment.java | 55 ++- .../ui/fragment/PlaylistPageFragment.java | 11 +- .../ui/fragment/SongListPageFragment.java | 5 +- .../AlbumBottomSheetDialog.java | 17 +- .../ArtistBottomSheetDialog.java | 7 +- .../SongBottomSheetDialog.java | 19 +- .../viewmodel/SongBottomSheetViewModel.java | 2 +- 18 files changed, 286 insertions(+), 292 deletions(-) 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 23a18637..583e8e2b 100644 --- a/app/src/main/java/com/cappielloantonio/play/adapter/DiscoverSongAdapter.java +++ b/app/src/main/java/com/cappielloantonio/play/adapter/DiscoverSongAdapter.java @@ -19,7 +19,6 @@ 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.MusicPlayerRemote; import com.cappielloantonio.play.ui.activity.MainActivity; import com.cappielloantonio.play.util.MusicUtil; @@ -97,13 +96,13 @@ public class DiscoverSongAdapter extends RecyclerView.Adapter opener = new ArrayList<>(); opener.add(songs.get(getBindingAdapterPosition())); - MusicPlayerRemote.openQueue(opener, 0, true); + // MusicPlayerRemote.openQueue(opener, 0, true); QueueRepository queueRepository = new QueueRepository(App.getInstance()); queueRepository.insertAllAndStartNew(opener); activity.setBottomSheetInPeek(true); - activity.setBottomSheetMusicInfo(songs.get(getBindingAdapterPosition())); + // activity.setBottomSheetMusicInfo(songs.get(getBindingAdapterPosition())); SongRepository songRepository = new SongRepository(App.getInstance()); songRepository.getInstantMix(songs.get(getBindingAdapterPosition()), 20, new MediaCallback() { @@ -114,7 +113,7 @@ public class DiscoverSongAdapter extends RecyclerView.Adapter media) { - MusicPlayerRemote.enqueue((List) media); + //MusicPlayerRemote.enqueue((List) media); } }); } diff --git a/app/src/main/java/com/cappielloantonio/play/adapter/PlayerSongQueueAdapter.java b/app/src/main/java/com/cappielloantonio/play/adapter/PlayerSongQueueAdapter.java index 99d94a70..39915d49 100644 --- a/app/src/main/java/com/cappielloantonio/play/adapter/PlayerSongQueueAdapter.java +++ b/app/src/main/java/com/cappielloantonio/play/adapter/PlayerSongQueueAdapter.java @@ -8,18 +8,22 @@ import android.widget.ImageView; import android.widget.TextView; import androidx.annotation.NonNull; +import androidx.media3.session.MediaBrowser; import androidx.recyclerview.widget.RecyclerView; import com.bumptech.glide.load.resource.bitmap.RoundedCorners; import com.cappielloantonio.play.R; import com.cappielloantonio.play.glide.CustomGlideRequest; import com.cappielloantonio.play.model.Song; -import com.cappielloantonio.play.service.MusicPlayerRemote; import com.cappielloantonio.play.ui.fragment.PlayerBottomSheetFragment; +import com.cappielloantonio.play.util.MappingUtil; import com.cappielloantonio.play.util.MusicUtil; +import com.google.common.util.concurrent.ListenableFuture; +import com.google.common.util.concurrent.MoreExecutors; import java.util.ArrayList; import java.util.List; +import java.util.concurrent.ExecutionException; public class PlayerSongQueueAdapter extends RecyclerView.Adapter { private static final String TAG = "SongResultSearchAdapter"; @@ -57,10 +61,10 @@ public class PlayerSongQueueAdapter extends RecyclerView.Adapter opener = new ArrayList<>(); - opener.add(songs.get(getBindingAdapterPosition())); - MusicPlayerRemote.openQueue(opener, 0, true); + // List opener = new ArrayList<>(); + // opener.add(songs.get(getBindingAdapterPosition())); + // MusicPlayerRemote.openQueue(opener, 0, true); - QueueRepository queueRepository = new QueueRepository(App.getInstance()); - queueRepository.insertAllAndStartNew(opener); + // 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())); + // 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) { @@ -109,9 +123,10 @@ public class SimilarTrackAdapter extends RecyclerView.Adapter media) { - MusicPlayerRemote.enqueue((List) media); + // MusicPlayerRemote.enqueue((List) media); + MediaManager.enqueue(mainActivity.getMediaControllerInstance(), MappingUtil.mapMediaItem(context, (List) media), (List) media); } - }); + });*/ } @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 c51e243e..7fbaae56 100644 --- a/app/src/main/java/com/cappielloantonio/play/adapter/SongHorizontalAdapter.java +++ b/app/src/main/java/com/cappielloantonio/play/adapter/SongHorizontalAdapter.java @@ -18,7 +18,6 @@ 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.MusicPlayerRemote; import com.cappielloantonio.play.ui.activity.MainActivity; import com.cappielloantonio.play.util.DownloadUtil; import com.cappielloantonio.play.util.MusicUtil; @@ -59,11 +58,11 @@ public class SongHorizontalAdapter extends RecyclerView.Adapter queueRepository.insertAllAndStartNew(songs); mainActivity.setBottomSheetInPeek(true); - mainActivity.setBottomSheetMusicInfo(songs.get(getBindingAdapterPosition())); + // mainActivity.setBottomSheetMusicInfo(songs.get(getBindingAdapterPosition())); - MusicPlayerRemote.openQueue(songs, getBindingAdapterPosition(), true); + // MusicPlayerRemote.openQueue(songs, getBindingAdapterPosition(), true); } diff --git a/app/src/main/java/com/cappielloantonio/play/repository/QueueRepository.java b/app/src/main/java/com/cappielloantonio/play/repository/QueueRepository.java index 9a775010..ac2a487a 100644 --- a/app/src/main/java/com/cappielloantonio/play/repository/QueueRepository.java +++ b/app/src/main/java/com/cappielloantonio/play/repository/QueueRepository.java @@ -5,7 +5,9 @@ import android.app.Application; import androidx.lifecycle.LiveData; import com.cappielloantonio.play.database.AppDatabase; +import com.cappielloantonio.play.database.dao.DownloadDao; import com.cappielloantonio.play.database.dao.QueueDao; +import com.cappielloantonio.play.model.Download; import com.cappielloantonio.play.model.Queue; import com.cappielloantonio.play.model.Song; import com.cappielloantonio.play.util.MappingUtil; @@ -46,6 +48,12 @@ public class QueueRepository { return songs; } + public void insertAll(List songs) { + InsertAllThreadSafe insertAll = new InsertAllThreadSafe(queueDao, songs); + Thread thread = new Thread(insertAll); + thread.start(); + } + public void insertAllAndStartNew(List songs) { try { final Thread delete = new Thread(new DeleteAllThreadSafe(queueDao)); diff --git a/app/src/main/java/com/cappielloantonio/play/ui/activity/MainActivity.java b/app/src/main/java/com/cappielloantonio/play/ui/activity/MainActivity.java index c22c6315..0fa18e59 100644 --- a/app/src/main/java/com/cappielloantonio/play/ui/activity/MainActivity.java +++ b/app/src/main/java/com/cappielloantonio/play/ui/activity/MainActivity.java @@ -12,15 +12,12 @@ import androidx.lifecycle.ViewModelProvider; import androidx.navigation.NavController; import androidx.navigation.fragment.NavHostFragment; import androidx.navigation.ui.NavigationUI; -import androidx.viewpager2.widget.ViewPager2; import com.cappielloantonio.play.App; import com.cappielloantonio.play.R; import com.cappielloantonio.play.broadcast.receiver.ConnectivityStatusBroadcastReceiver; import com.cappielloantonio.play.databinding.ActivityMainBinding; -import com.cappielloantonio.play.model.Song; import com.cappielloantonio.play.repository.QueueRepository; -import com.cappielloantonio.play.service.MusicPlayerRemote; import com.cappielloantonio.play.ui.activity.base.BaseActivity; import com.cappielloantonio.play.ui.dialog.ConnectionAlertDialog; import com.cappielloantonio.play.ui.dialog.ServerUnreachableDialog; @@ -76,6 +73,14 @@ public class MainActivity extends BaseActivity { bind = null; } + @Override + public void onBackPressed() { + if (bottomSheetBehavior.getState() == BottomSheetBehavior.STATE_EXPANDED) + collapseBottomSheet(); + else + super.onBackPressed(); + } + public void init() { fragmentManager = getSupportFragmentManager(); @@ -159,7 +164,7 @@ public class MainActivity extends BaseActivity { switch (state) { case BottomSheetBehavior.STATE_HIDDEN: - MusicPlayerRemote.quitPlaying(); + resetMusicSession(); break; case BottomSheetBehavior.STATE_COLLAPSED: if (playerBottomSheetFragment != null) { @@ -193,17 +198,6 @@ public class MainActivity extends BaseActivity { } }; - /* - * Scroll on top del bottom sheet quando chiudo - * In questo modo non mi ritrovo al posto dell'header una parte centrale del player - */ - public void setBottomSheetMusicInfo(Song song) { - PlayerBottomSheetFragment playerBottomSheetFragment = (PlayerBottomSheetFragment) getSupportFragmentManager().findFragmentByTag("PlayerBottomSheet"); - if (playerBottomSheetFragment == null) return; - - playerBottomSheetFragment.setSongInfo(song); - } - public void collapseBottomSheet() { bottomSheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED); } @@ -255,21 +249,13 @@ public class MainActivity extends BaseActivity { private void resetMusicSession() { QueueRepository queueRepository = new QueueRepository(App.getInstance()); queueRepository.deleteAll(); - MusicPlayerRemote.quitPlaying(); + // MusicPlayerRemote.quitPlaying(); } private void resetViewModel() { this.getViewModelStore().clear(); } - @Override - public void onBackPressed() { - if (bottomSheetBehavior.getState() == BottomSheetBehavior.STATE_EXPANDED) - collapseBottomSheet(); - else - super.onBackPressed(); - } - // CONNECTION private void connectivityStatusReceiverManager(boolean isActive) { if (isActive) { diff --git a/app/src/main/java/com/cappielloantonio/play/ui/dialog/StarredSyncDialog.java b/app/src/main/java/com/cappielloantonio/play/ui/dialog/StarredSyncDialog.java index 4f33a432..eeb14105 100644 --- a/app/src/main/java/com/cappielloantonio/play/ui/dialog/StarredSyncDialog.java +++ b/app/src/main/java/com/cappielloantonio/play/ui/dialog/StarredSyncDialog.java @@ -60,7 +60,7 @@ public class StarredSyncDialog extends DialogFragment { ((AlertDialog) Objects.requireNonNull(getDialog())).getButton(AlertDialog.BUTTON_POSITIVE).setOnClickListener(v -> { starredSyncViewModel.getStarredTracks(requireActivity()).observe(requireActivity(), songs -> { if (songs != null) { - DownloadUtil.getDownloadTracker(context).download(songs, null, null); + // DownloadUtil.getDownloadTracker(context).download(songs, null, null); } }); diff --git a/app/src/main/java/com/cappielloantonio/play/ui/fragment/AlbumPageFragment.java b/app/src/main/java/com/cappielloantonio/play/ui/fragment/AlbumPageFragment.java index 18fe3435..cac2f306 100644 --- a/app/src/main/java/com/cappielloantonio/play/ui/fragment/AlbumPageFragment.java +++ b/app/src/main/java/com/cappielloantonio/play/ui/fragment/AlbumPageFragment.java @@ -22,7 +22,6 @@ import com.cappielloantonio.play.adapter.SongHorizontalAdapter; import com.cappielloantonio.play.databinding.FragmentAlbumPageBinding; import com.cappielloantonio.play.glide.CustomGlideRequest; import com.cappielloantonio.play.repository.QueueRepository; -import com.cappielloantonio.play.service.MusicPlayerRemote; import com.cappielloantonio.play.ui.activity.MainActivity; import com.cappielloantonio.play.util.DownloadUtil; import com.cappielloantonio.play.util.MusicUtil; @@ -87,7 +86,7 @@ public class AlbumPageFragment extends Fragment { if (item.getItemId() == R.id.action_download_album) { albumPageViewModel.getAlbumSongLiveList(requireActivity()).observe(requireActivity(), songs -> { if (isVisible() && getActivity() != null) { - DownloadUtil.getDownloadTracker(requireContext()).download(songs, null, null); + // DownloadUtil.getDownloadTracker(requireContext()).download(songs, null, null); } }); return true; @@ -139,9 +138,9 @@ public class AlbumPageFragment extends Fragment { queueRepository.insertAllAndStartNew(songs); activity.setBottomSheetInPeek(true); - activity.setBottomSheetMusicInfo(songs.get(0)); + // activity.setBottomSheetMusicInfo(songs.get(0)); - MusicPlayerRemote.openQueue(songs, 0, true); + // MusicPlayerRemote.openQueue(songs, 0, true); }); bind.albumPageShuffleButton.setOnClickListener(v -> { @@ -151,9 +150,9 @@ public class AlbumPageFragment extends Fragment { queueRepository.insertAllAndStartNew(songs); activity.setBottomSheetInPeek(true); - activity.setBottomSheetMusicInfo(songs.get(0)); + // activity.setBottomSheetMusicInfo(songs.get(0)); - MusicPlayerRemote.openQueue(songs, 0, true); + // MusicPlayerRemote.openQueue(songs, 0, true); }); } diff --git a/app/src/main/java/com/cappielloantonio/play/ui/fragment/ArtistPageFragment.java b/app/src/main/java/com/cappielloantonio/play/ui/fragment/ArtistPageFragment.java index 5ede9a94..dca3bcf6 100644 --- a/app/src/main/java/com/cappielloantonio/play/ui/fragment/ArtistPageFragment.java +++ b/app/src/main/java/com/cappielloantonio/play/ui/fragment/ArtistPageFragment.java @@ -30,7 +30,6 @@ import com.cappielloantonio.play.interfaces.MediaCallback; import com.cappielloantonio.play.model.Song; import com.cappielloantonio.play.repository.ArtistRepository; import com.cappielloantonio.play.repository.QueueRepository; -import com.cappielloantonio.play.service.MusicPlayerRemote; import com.cappielloantonio.play.ui.activity.MainActivity; import com.cappielloantonio.play.util.MusicUtil; import com.cappielloantonio.play.viewmodel.ArtistPageViewModel; @@ -148,7 +147,7 @@ public class ArtistPageFragment extends Fragment { QueueRepository queueRepository = new QueueRepository(App.getInstance()); queueRepository.insertAllAndStartNew(songs); - MusicPlayerRemote.openQueue(songs, 0, true); + // MusicPlayerRemote.openQueue(songs, 0, true); activity.setBottomSheetInPeek(true); } else { Toast.makeText(requireContext(), getString(R.string.artist_error_retrieving_tracks), Toast.LENGTH_SHORT).show(); @@ -171,9 +170,9 @@ public class ArtistPageFragment extends Fragment { queueRepository.insertAllAndStartNew((ArrayList) media); activity.setBottomSheetInPeek(true); - activity.setBottomSheetMusicInfo((Song) media.get(0)); + // activity.setBottomSheetMusicInfo((Song) media.get(0)); - MusicPlayerRemote.openQueue((List) media, 0, true); + // MusicPlayerRemote.openQueue((List) media, 0, true); } else { Toast.makeText(requireContext(), getString(R.string.artist_error_retrieving_radio), Toast.LENGTH_SHORT).show(); } diff --git a/app/src/main/java/com/cappielloantonio/play/ui/fragment/PlayerBottomSheetFragment.java b/app/src/main/java/com/cappielloantonio/play/ui/fragment/PlayerBottomSheetFragment.java index c81b20ea..3295998f 100644 --- a/app/src/main/java/com/cappielloantonio/play/ui/fragment/PlayerBottomSheetFragment.java +++ b/app/src/main/java/com/cappielloantonio/play/ui/fragment/PlayerBottomSheetFragment.java @@ -1,16 +1,26 @@ package com.cappielloantonio.play.ui.fragment; +import android.annotation.SuppressLint; import android.os.Bundle; +import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import android.widget.ImageButton; +import android.widget.ImageView; import android.widget.ScrollView; -import android.widget.SeekBar; +import android.widget.TextView; +import android.widget.ToggleButton; import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import androidx.cardview.widget.CardView; import androidx.fragment.app.Fragment; import androidx.lifecycle.ViewModelProvider; +import androidx.media3.common.MediaItem; +import androidx.media3.common.MediaMetadata; +import androidx.media3.common.Player; +import androidx.media3.session.MediaController; import androidx.navigation.fragment.NavHostFragment; import androidx.recyclerview.widget.ItemTouchHelper; import androidx.recyclerview.widget.LinearLayoutManager; @@ -22,40 +32,37 @@ import com.cappielloantonio.play.R; import com.cappielloantonio.play.adapter.PlayerNowPlayingSongAdapter; import com.cappielloantonio.play.adapter.PlayerSongQueueAdapter; import com.cappielloantonio.play.databinding.FragmentPlayerBottomSheetBinding; -import com.cappielloantonio.play.databinding.PlayerBodyBottomSheetBinding; -import com.cappielloantonio.play.databinding.PlayerHeaderBottomSheetBinding; import com.cappielloantonio.play.glide.CustomGlideRequest; -import com.cappielloantonio.play.helper.MusicProgressViewUpdateHelper; -import com.cappielloantonio.play.interfaces.MusicServiceEventListener; -import com.cappielloantonio.play.model.Song; -import com.cappielloantonio.play.service.MusicPlayerRemote; import com.cappielloantonio.play.ui.activity.MainActivity; import com.cappielloantonio.play.ui.dialog.RatingDialog; import com.cappielloantonio.play.util.MappingUtil; -import com.cappielloantonio.play.util.MusicUtil; import com.cappielloantonio.play.viewmodel.PlayerBottomSheetViewModel; +import com.google.common.util.concurrent.MoreExecutors; import java.util.Collections; import java.util.Objects; -public class PlayerBottomSheetFragment extends Fragment implements MusicServiceEventListener, MusicProgressViewUpdateHelper.Callback { +public class PlayerBottomSheetFragment extends Fragment { private static final String TAG = "PlayerBottomSheetFragment"; private FragmentPlayerBottomSheetBinding bind; - private PlayerHeaderBottomSheetBinding headerBind; - private PlayerBodyBottomSheetBinding bodyBind; + private ImageView playerMoveDownBottomSheet; + private ViewPager2 playerSongCoverViewPager; + private RecyclerView playerQueueRecyclerView; + private ToggleButton buttonFavorite; + private ImageButton playerCommandUnfoldButton; + private CardView playerCommandCardview; + private TextView playerSongTitleLabel; + private TextView playerArtistNameLabel; + private MainActivity activity; private PlayerBottomSheetViewModel playerBottomSheetViewModel; private PlayerSongQueueAdapter playerSongQueueAdapter; - private MusicProgressViewUpdateHelper progressViewUpdateHelper; - @Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); - - progressViewUpdateHelper = new MusicProgressViewUpdateHelper(this); } @Nullable @@ -66,9 +73,6 @@ public class PlayerBottomSheetFragment extends Fragment implements MusicServiceE bind = FragmentPlayerBottomSheetBinding.inflate(inflater, container, false); View view = bind.getRoot(); - headerBind = bind.playerHeaderLayout; - bodyBind = bind.playerBodyLayout; - playerBottomSheetViewModel = new ViewModelProvider(requireActivity()).get(PlayerBottomSheetViewModel.class); init(); @@ -76,58 +80,131 @@ public class PlayerBottomSheetFragment extends Fragment implements MusicServiceE initQueueRecyclerView(); initFavoriteButtonClick(); initMusicCommandUnfoldButton(); - initMusicCommandButton(); initArtistLabelButton(); return view; } - @Override - public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { - super.onViewCreated(view, savedInstanceState); - - activity.addMusicServiceEventListener(this); - setUpMusicControllers(); - } - @Override public void onResume() { super.onResume(); - progressViewUpdateHelper.start(); - } - - @Override - public void onPause() { - super.onPause(); - - progressViewUpdateHelper.stop(); + bindMediaController(); } @Override public void onDestroy() { super.onDestroy(); - - activity.removeMusicServiceEventListener(this); } @Override public void onDestroyView() { super.onDestroyView(); - headerBind = null; - bodyBind = null; bind = null; } + @SuppressLint("UnsafeOptInUsageError") private void init() { - bodyBind.playerMoveDownBottomSheet.setOnClickListener(view -> activity.collapseBottomSheet()); + playerMoveDownBottomSheet = bind.getRoot().findViewById(R.id.player_move_down_bottom_sheet); + playerSongCoverViewPager = bind.getRoot().findViewById(R.id.player_song_cover_view_pager); + playerQueueRecyclerView = bind.getRoot().findViewById(R.id.player_queue_recycler_view); + buttonFavorite = bind.getRoot().findViewById(R.id.button_favorite); + playerCommandUnfoldButton = bind.getRoot().findViewById(R.id.player_command_unfold_button); + playerCommandCardview = bind.getRoot().findViewById(R.id.player_command_cardview); + playerSongTitleLabel = bind.getRoot().findViewById(R.id.player_song_title_label); + playerArtistNameLabel = bind.getRoot().findViewById(R.id.player_artist_name_label); + + playerMoveDownBottomSheet.setOnClickListener(view -> activity.collapseBottomSheet()); + bind.playerBodyLayout.setProgressUpdateListener((position, bufferedPosition) -> bind.playerHeaderLayout.playerHeaderSeekBar.setProgress((int) (position / 1000), true)); + } + + @SuppressLint("UnsafeOptInUsageError") + private void bindMediaController() { + activity.mediaControllerListenableFuture.addListener(() -> { + try { + MediaController mediaController = activity.mediaControllerListenableFuture.get(); + + bind.playerBodyLayout.setPlayer(mediaController); + + setMediaControllerListener(mediaController); + } catch (Exception e) { + Log.e(TAG, e.getMessage()); + } + }, MoreExecutors.directExecutor()); + } + + @SuppressLint("UnsafeOptInUsageError") + private void setMediaControllerListener(MediaController mediaController) { + setMetadata(mediaController.getMediaMetadata()); + setContentDuration(mediaController.getContentDuration()); + setPlayingState(mediaController.isPlaying()); + setHeaderMediaController(); + setHeaderNextButtonState(mediaController.hasNextMediaItem()); + + mediaController.addListener(new Player.Listener() { + @Override + public void onMediaMetadataChanged(@NonNull MediaMetadata mediaMetadata) { + setMetadata(mediaMetadata); + setContentDuration(mediaController.getContentDuration()); + } + + @Override + public void onIsPlayingChanged(boolean isPlaying) { + setPlayingState(isPlaying); + } + + @Override + public void onMediaItemTransition(@Nullable MediaItem mediaItem, int reason) { + setHeaderNextButtonState(mediaController.hasNextMediaItem()); + } + }); + } + + private void setMetadata(MediaMetadata mediaMetadata) { + bind.playerHeaderLayout.playerHeaderSongTitleLabel.setText(mediaMetadata.title); + bind.playerHeaderLayout.playerHeaderSongArtistLabel.setText(mediaMetadata.artist); + + playerSongTitleLabel.setText(mediaMetadata.title); + playerArtistNameLabel.setText(mediaMetadata.artist); + + CustomGlideRequest.Builder + .from(requireContext(), mediaMetadata.extras != null ? mediaMetadata.extras.getString("id") : null, CustomGlideRequest.SONG_PIC, null) + .build() + .transform(new RoundedCorners(CustomGlideRequest.CORNER_RADIUS)) + .into(bind.playerHeaderLayout.playerHeaderSongCoverImage); + } + + private void setContentDuration(long duration) { + bind.playerHeaderLayout.playerHeaderSeekBar.setMax((int) (duration / 1000)); + } + + private void setPlayingState(boolean isPlaying) { + bind.playerHeaderLayout.playerHeaderButton.setChecked(isPlaying); + } + + @SuppressLint("UnsafeOptInUsageError") + private void setHeaderMediaController() { + bind.playerHeaderLayout.playerHeaderButton.setOnClickListener(view -> { + if (bind.playerHeaderLayout.playerHeaderButton.isChecked()) { + bind.getRoot().findViewById(R.id.exo_play).performClick(); + } else { + bind.getRoot().findViewById(R.id.exo_pause).performClick(); + } + }); + + bind.playerHeaderLayout.playerHeaderNextSongButton.setOnClickListener(view -> bind.getRoot().findViewById(R.id.exo_next).performClick()); + } + + private void setHeaderNextButtonState(boolean isEnabled) { + bind.playerHeaderLayout.playerHeaderNextSongButton.setEnabled(isEnabled); + bind.playerHeaderLayout.playerHeaderNextSongButton.setAlpha(isEnabled ? (float) 1.0 : (float) 0.3); } private void initCoverLyricsSlideView() { - bodyBind.playerSongCoverViewPager.setOrientation(ViewPager2.ORIENTATION_HORIZONTAL); - bodyBind.playerSongCoverViewPager.setAdapter(new PlayerNowPlayingSongAdapter(this)); + playerSongCoverViewPager.setOrientation(ViewPager2.ORIENTATION_HORIZONTAL); + playerSongCoverViewPager.setAdapter(new PlayerNowPlayingSongAdapter(this)); - bodyBind.playerSongCoverViewPager.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() { + playerSongCoverViewPager.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() { @Override public void onPageSelected(int position) { super.onPageSelected(position); @@ -142,11 +219,11 @@ public class PlayerBottomSheetFragment extends Fragment implements MusicServiceE } private void initQueueRecyclerView() { - bodyBind.playerQueueRecyclerView.setLayoutManager(new LinearLayoutManager(requireContext())); - bodyBind.playerQueueRecyclerView.setHasFixedSize(true); + playerQueueRecyclerView.setLayoutManager(new LinearLayoutManager(requireContext())); + playerQueueRecyclerView.setHasFixedSize(true); playerSongQueueAdapter = new PlayerSongQueueAdapter(requireContext(), this); - bodyBind.playerQueueRecyclerView.setAdapter(playerSongQueueAdapter); + playerQueueRecyclerView.setAdapter(playerSongQueueAdapter); playerBottomSheetViewModel.getQueueSong().observe(requireActivity(), queue -> playerSongQueueAdapter.setItems(MappingUtil.mapQueue(queue))); new ItemTouchHelper(new ItemTouchHelper.SimpleCallback(ItemTouchHelper.UP | ItemTouchHelper.DOWN, ItemTouchHelper.LEFT) { @@ -187,9 +264,9 @@ public class PlayerBottomSheetFragment extends Fragment implements MusicServiceE * Qui vado a riscivere tutta la table Queue, quando teoricamente potrei solo swappare l'ordine degli elementi interessati * Nel caso la coda contenesse parecchi brani, potrebbero verificarsi rallentamenti pesanti */ - playerBottomSheetViewModel.orderSongAfterSwap(playerSongQueueAdapter.getItems()); - MusicPlayerRemote.moveSong(originalPosition, toPosition); - bodyBind.playerSongCoverViewPager.setCurrentItem(MusicPlayerRemote.getPosition(), false); + // playerBottomSheetViewModel.orderSongAfterSwap(playerSongQueueAdapter.getItems()); + // MusicPlayerRemote.moveSong(originalPosition, toPosition); + // playerSongCoverViewPager.setCurrentItem(MusicPlayerRemote.getPosition(), false); originalPosition = -1; fromPosition = -1; @@ -198,22 +275,22 @@ public class PlayerBottomSheetFragment extends Fragment implements MusicServiceE @Override public void onSwiped(@NonNull RecyclerView.ViewHolder viewHolder, int direction) { - if (!(viewHolder.getBindingAdapterPosition() == MusicPlayerRemote.getPosition()) && !(MusicPlayerRemote.getPlayingQueue().size() <= 1)) { + /*if (!(viewHolder.getBindingAdapterPosition() == MusicPlayerRemote.getPosition()) && !(MusicPlayerRemote.getPlayingQueue().size() <= 1)) { MusicPlayerRemote.removeFromQueue(viewHolder.getBindingAdapterPosition()); playerBottomSheetViewModel.removeSong(viewHolder.getBindingAdapterPosition()); - Objects.requireNonNull(bodyBind.playerQueueRecyclerView.getAdapter()).notifyItemRemoved(viewHolder.getBindingAdapterPosition()); - bodyBind.playerSongCoverViewPager.setCurrentItem(MusicPlayerRemote.getPosition(), false); + Objects.requireNonNull(playerQueueRecyclerView.getAdapter()).notifyItemRemoved(viewHolder.getBindingAdapterPosition()); + playerSongCoverViewPager.setCurrentItem(MusicPlayerRemote.getPosition(), false); } else { - bodyBind.playerQueueRecyclerView.getAdapter().notifyDataSetChanged(); - } + playerQueueRecyclerView.getAdapter().notifyDataSetChanged(); + }*/ } } - ).attachToRecyclerView(bodyBind.playerQueueRecyclerView); + ).attachToRecyclerView(playerQueueRecyclerView); } private void initFavoriteButtonClick() { - bodyBind.buttonFavorite.setOnClickListener(v -> playerBottomSheetViewModel.setFavorite(requireContext())); - bodyBind.buttonFavorite.setOnLongClickListener(v -> { + buttonFavorite.setOnClickListener(v -> playerBottomSheetViewModel.setFavorite(requireContext())); + buttonFavorite.setOnLongClickListener(v -> { Bundle bundle = new Bundle(); bundle.putParcelable("song_object", playerBottomSheetViewModel.getCurrentSong()); @@ -226,42 +303,17 @@ public class PlayerBottomSheetFragment extends Fragment implements MusicServiceE } private void initMusicCommandUnfoldButton() { - bodyBind.playerCommandUnfoldButton.setOnClickListener(view -> { - if (bodyBind.playerCommandCardview.getVisibility() == View.INVISIBLE || bodyBind.playerCommandCardview.getVisibility() == View.GONE) { - bodyBind.playerCommandCardview.setVisibility(View.VISIBLE); + playerCommandUnfoldButton.setOnClickListener(view -> { + if (playerCommandCardview.getVisibility() == View.INVISIBLE || playerCommandCardview.getVisibility() == View.GONE) { + playerCommandCardview.setVisibility(View.VISIBLE); } else { - bodyBind.playerCommandCardview.setVisibility(View.GONE); + playerCommandCardview.setVisibility(View.GONE); } }); } - private void initMusicCommandButton() { - // Header - headerBind.playerHeaderButton.setOnClickListener(v -> { - if (MusicPlayerRemote.isPlaying()) { - MusicPlayerRemote.pauseSong(); - } else { - MusicPlayerRemote.resumePlaying(); - } - }); - - headerBind.playerHeaderNextSongButton.setOnClickListener(v -> MusicPlayerRemote.playNextSong()); - - // Body - bodyBind.playerBigPlayPauseButton.setOnClickListener(v -> { - if (MusicPlayerRemote.isPlaying()) { - MusicPlayerRemote.pauseSong(); - } else { - MusicPlayerRemote.resumePlaying(); - } - }); - - bodyBind.playerBigNextButton.setOnClickListener(v -> MusicPlayerRemote.playNextSong()); - bodyBind.playerBigPreviousButton.setOnClickListener(v -> MusicPlayerRemote.playPreviousSong()); - } - private void initArtistLabelButton() { - bodyBind.playerArtistNameLabel.setOnClickListener(view -> playerBottomSheetViewModel.getArtist().observe(requireActivity(), artist -> { + playerArtistNameLabel.setOnClickListener(view -> playerBottomSheetViewModel.getArtist().observe(requireActivity(), artist -> { Bundle bundle = new Bundle(); bundle.putParcelable("artist_object", artist); NavHostFragment.findNavController(this).navigate(R.id.artistPageFragment, bundle); @@ -269,55 +321,6 @@ public class PlayerBottomSheetFragment extends Fragment implements MusicServiceE })); } - private void initSeekBar() { - bodyBind.playerBigSeekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { - @Override - public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { - if (fromUser) { - MusicPlayerRemote.seekTo(progress); - onUpdateProgressViews(MusicPlayerRemote.getSongProgressMillis(), MusicPlayerRemote.getSongDurationMillis()); - } - } - - @Override - public void onStartTrackingTouch(SeekBar seekBar) { - - } - - @Override - public void onStopTrackingTouch(SeekBar seekBar) { - - } - }); - } - - public void setSongInfo(Song song) { - playerBottomSheetViewModel.refreshSongInfo(requireActivity(), song); - - bodyBind.playerSongTitleLabel.setText(MusicUtil.getReadableString(song.getTitle())); - bodyBind.playerArtistNameLabel.setText(MusicUtil.getReadableString(song.getArtistName())); - - headerBind.playerHeaderSongTitleLabel.setText(MusicUtil.getReadableString(song.getTitle())); - headerBind.playerHeaderSongArtistLabel.setText(MusicUtil.getReadableString(song.getArtistName())); - - CustomGlideRequest.Builder - .from(requireContext(), song.getPrimary(), CustomGlideRequest.SONG_PIC, null) - .build() - .transform(new RoundedCorners(CustomGlideRequest.CORNER_RADIUS)) - .into(headerBind.playerHeaderSongCoverImage); - - bodyBind.buttonFavorite.setChecked(song.isFavorite()); - } - - protected void updatePlayPauseState() { - headerBind.playerHeaderButton.setChecked(!MusicPlayerRemote.isPlaying()); - bodyBind.playerBigPlayPauseButton.setChecked(!MusicPlayerRemote.isPlaying()); - } - - private void setUpMusicControllers() { - initSeekBar(); - } - public View getPlayerHeader() { return requireView().findViewById(R.id.player_header_layout); } @@ -327,53 +330,10 @@ public class PlayerBottomSheetFragment extends Fragment implements MusicServiceE } public void goBackToFirstPage() { - bodyBind.playerSongCoverViewPager.setCurrentItem(0); + playerSongCoverViewPager.setCurrentItem(0); } public boolean isViewPagerInFirstPage() { - return bodyBind.playerSongCoverViewPager.getCurrentItem() == 0; - } - - @Override - public void onServiceConnected() { - setSongInfo(Objects.requireNonNull(MusicPlayerRemote.getCurrentSong())); - updatePlayPauseState(); - } - - @Override - public void onServiceDisconnected() { - - } - - @Override - public void onQueueChanged() { - - } - - @Override - public void onPlayMetadataChanged() { - setSongInfo(Objects.requireNonNull(MusicPlayerRemote.getCurrentSong())); - } - - @Override - public void onPlayStateChanged() { - updatePlayPauseState(); - } - - @Override - public void onRepeatModeChanged() { - - } - - @Override - public void onUpdateProgressViews(int progress, int total) { - headerBind.playerHeaderSeekBar.setMax(total); - headerBind.playerHeaderSeekBar.setProgress(progress); - - bodyBind.playerBigSeekBar.setMax(total); - bodyBind.playerBigSeekBar.setProgress(progress); - - bodyBind.playerBigSongTimeIn.setText(MusicUtil.getReadableDurationString(progress, true)); - bodyBind.playerBigSongDuration.setText(MusicUtil.getReadableDurationString(total, true)); + return playerSongCoverViewPager.getCurrentItem() == 0; } } diff --git a/app/src/main/java/com/cappielloantonio/play/ui/fragment/PlayerCoverFragment.java b/app/src/main/java/com/cappielloantonio/play/ui/fragment/PlayerCoverFragment.java index 56b12d07..42199749 100644 --- a/app/src/main/java/com/cappielloantonio/play/ui/fragment/PlayerCoverFragment.java +++ b/app/src/main/java/com/cappielloantonio/play/ui/fragment/PlayerCoverFragment.java @@ -1,19 +1,25 @@ package com.cappielloantonio.play.ui.fragment; +import android.annotation.SuppressLint; import android.os.Bundle; +import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import androidx.annotation.NonNull; -import androidx.annotation.Nullable; import androidx.fragment.app.Fragment; import androidx.lifecycle.ViewModelProvider; +import androidx.media3.common.MediaMetadata; +import androidx.media3.common.Player; +import androidx.media3.session.MediaController; import com.bumptech.glide.load.resource.bitmap.RoundedCorners; import com.cappielloantonio.play.databinding.FragmentPlayerCoverBinding; import com.cappielloantonio.play.glide.CustomGlideRequest; +import com.cappielloantonio.play.ui.activity.MainActivity; import com.cappielloantonio.play.viewmodel.PlayerBottomSheetViewModel; +import com.google.common.util.concurrent.MoreExecutors; public class PlayerCoverFragment extends Fragment { private static final String TAG = "PlayerCoverFragment"; @@ -21,20 +27,25 @@ public class PlayerCoverFragment extends Fragment { private FragmentPlayerCoverBinding bind; private PlayerBottomSheetViewModel playerBottomSheetViewModel; + private MainActivity activity; + @Override public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + activity = (MainActivity) requireActivity(); + bind = FragmentPlayerCoverBinding.inflate(inflater, container, false); View view = bind.getRoot(); + playerBottomSheetViewModel = new ViewModelProvider(requireActivity()).get(PlayerBottomSheetViewModel.class); return view; } @Override - public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { - super.onViewCreated(view, savedInstanceState); + public void onResume() { + super.onResume(); - init(); + bindMediaController(); } @Override @@ -43,15 +54,35 @@ public class PlayerCoverFragment extends Fragment { bind = null; } - private void init() { - playerBottomSheetViewModel.getLiveSong().observe(requireActivity(), song -> { - if (song != null) { - CustomGlideRequest.Builder - .from(requireContext(), song.getId(), CustomGlideRequest.SONG_PIC, null) - .build() - .transform(new RoundedCorners(CustomGlideRequest.CORNER_RADIUS)) - .into(bind.nowPlayingSongCoverImageView); + private void bindMediaController() { + activity.mediaControllerListenableFuture.addListener(() -> { + try { + MediaController mediaController = activity.mediaControllerListenableFuture.get(); + + setMediaControllerListener(mediaController); + } catch (Exception e) { + Log.e(TAG, e.getMessage()); + } + }, MoreExecutors.directExecutor()); + } + + @SuppressLint("UnsafeOptInUsageError") + private void setMediaControllerListener(MediaController mediaController) { + setCover(mediaController.getMediaMetadata()); + + mediaController.addListener(new Player.Listener() { + @Override + public void onMediaMetadataChanged(@NonNull MediaMetadata mediaMetadata) { + setCover(mediaMetadata); } }); } + + private void setCover(MediaMetadata mediaMetadata) { + CustomGlideRequest.Builder + .from(requireContext(), mediaMetadata.extras != null ? mediaMetadata.extras.getString("id") : null, CustomGlideRequest.SONG_PIC, null) + .build() + .transform(new RoundedCorners(CustomGlideRequest.CORNER_RADIUS)) + .into(bind.nowPlayingSongCoverImageView); + } } \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/play/ui/fragment/PlaylistPageFragment.java b/app/src/main/java/com/cappielloantonio/play/ui/fragment/PlaylistPageFragment.java index 1d12d9bd..91f498a8 100644 --- a/app/src/main/java/com/cappielloantonio/play/ui/fragment/PlaylistPageFragment.java +++ b/app/src/main/java/com/cappielloantonio/play/ui/fragment/PlaylistPageFragment.java @@ -21,7 +21,6 @@ import com.cappielloantonio.play.adapter.SongHorizontalAdapter; import com.cappielloantonio.play.databinding.FragmentPlaylistPageBinding; import com.cappielloantonio.play.glide.CustomGlideRequest; import com.cappielloantonio.play.repository.QueueRepository; -import com.cappielloantonio.play.service.MusicPlayerRemote; import com.cappielloantonio.play.ui.activity.MainActivity; import com.cappielloantonio.play.util.DownloadUtil; import com.cappielloantonio.play.util.MusicUtil; @@ -85,7 +84,7 @@ public class PlaylistPageFragment extends Fragment { if (item.getItemId() == R.id.action_download_playlist) { playlistPageViewModel.getPlaylistSongLiveList(requireActivity()).observe(requireActivity(), songs -> { if (isVisible() && getActivity() != null) { - DownloadUtil.getDownloadTracker(requireContext()).download(songs, playlistPageViewModel.getPlaylist().getId(), playlistPageViewModel.getPlaylist().getName()); + // DownloadUtil.getDownloadTracker(requireContext()).download(songs, playlistPageViewModel.getPlaylist().getId(), playlistPageViewModel.getPlaylist().getName()); } }); return true; @@ -144,9 +143,9 @@ public class PlaylistPageFragment extends Fragment { queueRepository.insertAllAndStartNew(songs); activity.setBottomSheetInPeek(true); - activity.setBottomSheetMusicInfo(songs.get(0)); + // activity.setBottomSheetMusicInfo(songs.get(0)); - MusicPlayerRemote.openQueue(songs, 0, true); + // MusicPlayerRemote.openQueue(songs, 0, true); }); bind.playlistPageShuffleButton.setOnClickListener(v -> { @@ -156,9 +155,9 @@ public class PlaylistPageFragment extends Fragment { queueRepository.insertAllAndStartNew(songs); activity.setBottomSheetInPeek(true); - activity.setBottomSheetMusicInfo(songs.get(0)); + // activity.setBottomSheetMusicInfo(songs.get(0)); - MusicPlayerRemote.openQueue(songs, 0, true); + // MusicPlayerRemote.openQueue(songs, 0, true); }); } }); diff --git a/app/src/main/java/com/cappielloantonio/play/ui/fragment/SongListPageFragment.java b/app/src/main/java/com/cappielloantonio/play/ui/fragment/SongListPageFragment.java index a7fae63f..58fad804 100644 --- a/app/src/main/java/com/cappielloantonio/play/ui/fragment/SongListPageFragment.java +++ b/app/src/main/java/com/cappielloantonio/play/ui/fragment/SongListPageFragment.java @@ -17,7 +17,6 @@ import com.cappielloantonio.play.adapter.SongHorizontalAdapter; import com.cappielloantonio.play.databinding.FragmentSongListPageBinding; import com.cappielloantonio.play.model.Song; import com.cappielloantonio.play.repository.QueueRepository; -import com.cappielloantonio.play.service.MusicPlayerRemote; import com.cappielloantonio.play.ui.activity.MainActivity; import com.cappielloantonio.play.util.MusicUtil; import com.cappielloantonio.play.viewmodel.SongListPageViewModel; @@ -139,9 +138,9 @@ public class SongListPageFragment extends Fragment { queueRepository.insertAllAndStartNew(songs); activity.setBottomSheetInPeek(true); - activity.setBottomSheetMusicInfo(songs.get(0)); + // activity.setBottomSheetMusicInfo(songs.get(0)); - MusicPlayerRemote.openQueue(songs, 0, true); + // MusicPlayerRemote.openQueue(songs, 0, true); }); } }); diff --git a/app/src/main/java/com/cappielloantonio/play/ui/fragment/bottomsheetdialog/AlbumBottomSheetDialog.java b/app/src/main/java/com/cappielloantonio/play/ui/fragment/bottomsheetdialog/AlbumBottomSheetDialog.java index 28842c81..7556060e 100644 --- a/app/src/main/java/com/cappielloantonio/play/ui/fragment/bottomsheetdialog/AlbumBottomSheetDialog.java +++ b/app/src/main/java/com/cappielloantonio/play/ui/fragment/bottomsheetdialog/AlbumBottomSheetDialog.java @@ -23,7 +23,6 @@ import com.cappielloantonio.play.model.Album; import com.cappielloantonio.play.model.Song; import com.cappielloantonio.play.repository.AlbumRepository; import com.cappielloantonio.play.repository.QueueRepository; -import com.cappielloantonio.play.service.MusicPlayerRemote; import com.cappielloantonio.play.ui.activity.MainActivity; import com.cappielloantonio.play.util.DownloadUtil; import com.cappielloantonio.play.util.MusicUtil; @@ -95,9 +94,9 @@ public class AlbumBottomSheetDialog extends BottomSheetDialogFragment implements queueRepository.insertAllAndStartNew((ArrayList) media); ((MainActivity) requireActivity()).setBottomSheetInPeek(true); - ((MainActivity) requireActivity()).setBottomSheetMusicInfo((Song) media.get(0)); + // ((MainActivity) requireActivity()).setBottomSheetMusicInfo((Song) media.get(0)); - MusicPlayerRemote.openQueue((List) media, 0, true); + // MusicPlayerRemote.openQueue((List) media, 0, true); } else { Toast.makeText(requireContext(), getString(R.string.album_error_retrieving_radio), Toast.LENGTH_SHORT).show(); } @@ -116,7 +115,7 @@ public class AlbumBottomSheetDialog extends BottomSheetDialogFragment implements QueueRepository queueRepository = new QueueRepository(App.getInstance()); queueRepository.insertAllAndStartNew(songs); - MusicPlayerRemote.openQueue(songs, 0, true); + // MusicPlayerRemote.openQueue(songs, 0, true); ((MainActivity) requireActivity()).setBottomSheetInPeek(true); dismissBottomSheet(); @@ -125,14 +124,14 @@ public class AlbumBottomSheetDialog extends BottomSheetDialogFragment implements TextView playNext = view.findViewById(R.id.play_next_text_view); playNext.setOnClickListener(v -> albumBottomSheetViewModel.getAlbumTracks().observe(requireActivity(), songs -> { - MusicPlayerRemote.playNext(songs); + // MusicPlayerRemote.playNext(songs); ((MainActivity) requireActivity()).setBottomSheetInPeek(true); dismissBottomSheet(); })); TextView addToQueue = view.findViewById(R.id.add_to_queue_text_view); addToQueue.setOnClickListener(v -> albumBottomSheetViewModel.getAlbumTracks().observe(requireActivity(), songs -> { - MusicPlayerRemote.enqueue(songs); + // MusicPlayerRemote.enqueue(songs); dismissBottomSheet(); })); @@ -141,18 +140,18 @@ public class AlbumBottomSheetDialog extends BottomSheetDialogFragment implements albumBottomSheetViewModel.getAlbumTracks().observe(requireActivity(), songs -> { downloadAll.setOnClickListener(v -> { - DownloadUtil.getDownloadTracker(requireContext()).download(songs, null, null); + // DownloadUtil.getDownloadTracker(requireContext()).download(songs, null, null); dismissBottomSheet(); }); - if (DownloadUtil.getDownloadTracker(requireContext()).isDownloaded(songs)) { + /*if (DownloadUtil.getDownloadTracker(requireContext()).isDownloaded(songs)) { removeAll.setOnClickListener(v -> { DownloadUtil.getDownloadTracker(requireContext()).remove(songs); dismissBottomSheet(); }); } else { removeAll.setVisibility(View.GONE); - } + }*/ }); TextView goToArtist = view.findViewById(R.id.go_to_artist_text_view); diff --git a/app/src/main/java/com/cappielloantonio/play/ui/fragment/bottomsheetdialog/ArtistBottomSheetDialog.java b/app/src/main/java/com/cappielloantonio/play/ui/fragment/bottomsheetdialog/ArtistBottomSheetDialog.java index 7011eabf..00ca7095 100644 --- a/app/src/main/java/com/cappielloantonio/play/ui/fragment/bottomsheetdialog/ArtistBottomSheetDialog.java +++ b/app/src/main/java/com/cappielloantonio/play/ui/fragment/bottomsheetdialog/ArtistBottomSheetDialog.java @@ -22,7 +22,6 @@ import com.cappielloantonio.play.model.Artist; import com.cappielloantonio.play.model.Song; import com.cappielloantonio.play.repository.ArtistRepository; import com.cappielloantonio.play.repository.QueueRepository; -import com.cappielloantonio.play.service.MusicPlayerRemote; import com.cappielloantonio.play.ui.activity.MainActivity; import com.cappielloantonio.play.util.MusicUtil; import com.cappielloantonio.play.viewmodel.ArtistBottomSheetViewModel; @@ -89,9 +88,9 @@ public class ArtistBottomSheetDialog extends BottomSheetDialogFragment implement queueRepository.insertAllAndStartNew((ArrayList) media); ((MainActivity) requireActivity()).setBottomSheetInPeek(true); - ((MainActivity) requireActivity()).setBottomSheetMusicInfo((Song) media.get(0)); + // ((MainActivity) requireActivity()).setBottomSheetMusicInfo((Song) media.get(0)); - MusicPlayerRemote.openQueue((List) media, 0, true); + // MusicPlayerRemote.openQueue((List) media, 0, true); } else { Toast.makeText(requireContext(), getString(R.string.artist_error_retrieving_radio), Toast.LENGTH_SHORT).show(); } @@ -109,7 +108,7 @@ public class ArtistBottomSheetDialog extends BottomSheetDialogFragment implement QueueRepository queueRepository = new QueueRepository(App.getInstance()); queueRepository.insertAllAndStartNew(songs); - MusicPlayerRemote.openQueue(songs, 0, true); + // MusicPlayerRemote.openQueue(songs, 0, true); ((MainActivity) requireActivity()).setBottomSheetInPeek(true); } else { Toast.makeText(requireContext(), getString(R.string.artist_error_retrieving_tracks), Toast.LENGTH_SHORT).show(); diff --git a/app/src/main/java/com/cappielloantonio/play/ui/fragment/bottomsheetdialog/SongBottomSheetDialog.java b/app/src/main/java/com/cappielloantonio/play/ui/fragment/bottomsheetdialog/SongBottomSheetDialog.java index 1a182454..7a406d5c 100644 --- a/app/src/main/java/com/cappielloantonio/play/ui/fragment/bottomsheetdialog/SongBottomSheetDialog.java +++ b/app/src/main/java/com/cappielloantonio/play/ui/fragment/bottomsheetdialog/SongBottomSheetDialog.java @@ -22,7 +22,6 @@ 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.MusicPlayerRemote; import com.cappielloantonio.play.ui.activity.MainActivity; import com.cappielloantonio.play.ui.dialog.PlaylistChooserDialog; import com.cappielloantonio.play.ui.dialog.RatingDialog; @@ -94,13 +93,13 @@ public class SongBottomSheetDialog extends BottomSheetDialogFragment implements playRadio.setOnClickListener(v -> { List opener = new ArrayList<>(); opener.add(song); - MusicPlayerRemote.openQueue(opener, 0, true); + // MusicPlayerRemote.openQueue(opener, 0, true); QueueRepository queueRepository = new QueueRepository(App.getInstance()); queueRepository.insertAllAndStartNew(opener); ((MainActivity) requireActivity()).setBottomSheetInPeek(true); - ((MainActivity) requireActivity()).setBottomSheetMusicInfo(song); + // ((MainActivity) requireActivity()).setBottomSheetMusicInfo(song); SongRepository songRepository = new SongRepository(App.getInstance()); songRepository.getInstantMix(song, 20, new MediaCallback() { @@ -111,7 +110,7 @@ public class SongBottomSheetDialog extends BottomSheetDialogFragment implements @Override public void onLoadMedia(List media) { - MusicPlayerRemote.enqueue((List) media); + // MusicPlayerRemote.enqueue((List) media); } }); @@ -120,14 +119,14 @@ public class SongBottomSheetDialog extends BottomSheetDialogFragment implements TextView playNext = view.findViewById(R.id.play_next_text_view); playNext.setOnClickListener(v -> { - MusicPlayerRemote.playNext(song); + // MusicPlayerRemote.playNext(song); ((MainActivity) requireActivity()).setBottomSheetInPeek(true); dismissBottomSheet(); }); TextView addToQueue = view.findViewById(R.id.add_to_queue_text_view); addToQueue.setOnClickListener(v -> { - MusicPlayerRemote.enqueue(song); + // MusicPlayerRemote.enqueue(song); ((MainActivity) requireActivity()).setBottomSheetInPeek(true); dismissBottomSheet(); }); @@ -146,13 +145,13 @@ public class SongBottomSheetDialog extends BottomSheetDialogFragment implements TextView download = view.findViewById(R.id.download_text_view); download.setOnClickListener(v -> { - DownloadUtil.getDownloadTracker(requireContext()).download(Collections.singletonList(song), null, null); + // DownloadUtil.getDownloadTracker(requireContext()).download(Collections.singletonList(song), null, null); dismissBottomSheet(); }); TextView remove = view.findViewById(R.id.remove_text_view); remove.setOnClickListener(v -> { - DownloadUtil.getDownloadTracker(requireContext()).remove(Collections.singletonList(song)); + // DownloadUtil.getDownloadTracker(requireContext()).remove(Collections.singletonList(song)); dismissBottomSheet(); }); @@ -205,12 +204,12 @@ public class SongBottomSheetDialog extends BottomSheetDialogFragment implements } private void initDownloadUI(TextView download, TextView remove) { - if (DownloadUtil.getDownloadTracker(requireContext()).isDownloaded(song)) { + /*if (DownloadUtil.getDownloadTracker(requireContext()).isDownloaded(song)) { download.setVisibility(View.GONE); remove.setVisibility(View.VISIBLE); } else { download.setVisibility(View.VISIBLE); remove.setVisibility(View.GONE); - } + }*/ } } \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/play/viewmodel/SongBottomSheetViewModel.java b/app/src/main/java/com/cappielloantonio/play/viewmodel/SongBottomSheetViewModel.java index 906e9bec..90e7355f 100644 --- a/app/src/main/java/com/cappielloantonio/play/viewmodel/SongBottomSheetViewModel.java +++ b/app/src/main/java/com/cappielloantonio/play/viewmodel/SongBottomSheetViewModel.java @@ -51,7 +51,7 @@ public class SongBottomSheetViewModel extends AndroidViewModel { song.setFavorite(true); if(PreferenceUtil.getInstance(context).isStarredSyncEnabled()) { - DownloadUtil.getDownloadTracker(context).download(Collections.singletonList(song), null, null); + // DownloadUtil.getDownloadTracker(context).download(Collections.singletonList(song), null, null); } } }