mirror of
https://github.com/antebudimir/tempus.git
synced 2025-12-31 17:43:32 +00:00
Moved MediaSession connection in fragment
This commit is contained in:
parent
9a2b0356c1
commit
279272a3af
1 changed files with 31 additions and 8 deletions
|
|
@ -1,6 +1,7 @@
|
|||
package com.cappielloantonio.play.ui.fragment;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.content.ComponentName;
|
||||
import android.os.Bundle;
|
||||
import android.util.Log;
|
||||
import android.view.LayoutInflater;
|
||||
|
|
@ -20,7 +21,9 @@ import androidx.lifecycle.ViewModelProvider;
|
|||
import androidx.media3.common.MediaItem;
|
||||
import androidx.media3.common.MediaMetadata;
|
||||
import androidx.media3.common.Player;
|
||||
import androidx.media3.session.MediaBrowser;
|
||||
import androidx.media3.session.MediaController;
|
||||
import androidx.media3.session.SessionToken;
|
||||
import androidx.navigation.fragment.NavHostFragment;
|
||||
import androidx.recyclerview.widget.ItemTouchHelper;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
|
|
@ -33,10 +36,12 @@ import com.cappielloantonio.play.adapter.PlayerNowPlayingSongAdapter;
|
|||
import com.cappielloantonio.play.adapter.PlayerSongQueueAdapter;
|
||||
import com.cappielloantonio.play.databinding.FragmentPlayerBottomSheetBinding;
|
||||
import com.cappielloantonio.play.glide.CustomGlideRequest;
|
||||
import com.cappielloantonio.play.service.MediaService;
|
||||
import com.cappielloantonio.play.ui.activity.MainActivity;
|
||||
import com.cappielloantonio.play.ui.dialog.RatingDialog;
|
||||
import com.cappielloantonio.play.util.MappingUtil;
|
||||
import com.cappielloantonio.play.viewmodel.PlayerBottomSheetViewModel;
|
||||
import com.google.common.util.concurrent.ListenableFuture;
|
||||
import com.google.common.util.concurrent.MoreExecutors;
|
||||
|
||||
import java.util.Collections;
|
||||
|
|
@ -57,6 +62,7 @@ public class PlayerBottomSheetFragment extends Fragment {
|
|||
|
||||
private MainActivity activity;
|
||||
private PlayerBottomSheetViewModel playerBottomSheetViewModel;
|
||||
private ListenableFuture<MediaController> mediaControllerListenableFuture;
|
||||
|
||||
private PlayerSongQueueAdapter playerSongQueueAdapter;
|
||||
|
||||
|
|
@ -86,15 +92,17 @@ public class PlayerBottomSheetFragment extends Fragment {
|
|||
}
|
||||
|
||||
@Override
|
||||
public void onResume() {
|
||||
super.onResume();
|
||||
public void onStart() {
|
||||
super.onStart();
|
||||
|
||||
initializeMediaController();
|
||||
bindMediaController();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroy() {
|
||||
super.onDestroy();
|
||||
public void onStop() {
|
||||
releaseMediaController();
|
||||
super.onStop();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -118,11 +126,21 @@ public class PlayerBottomSheetFragment extends Fragment {
|
|||
bind.playerBodyLayout.setProgressUpdateListener((position, bufferedPosition) -> bind.playerHeaderLayout.playerHeaderSeekBar.setProgress((int) (position / 1000), true));
|
||||
}
|
||||
|
||||
@SuppressLint("UnsafeOptInUsageError")
|
||||
private void initializeMediaController() {
|
||||
mediaControllerListenableFuture = new MediaController.Builder(requireContext(), new SessionToken(requireContext(), new ComponentName(requireContext(), MediaService.class))).buildAsync();
|
||||
}
|
||||
|
||||
private void releaseMediaController() {
|
||||
MediaController.releaseFuture(mediaControllerListenableFuture);
|
||||
}
|
||||
|
||||
|
||||
@SuppressLint("UnsafeOptInUsageError")
|
||||
private void bindMediaController() {
|
||||
activity.mediaControllerListenableFuture.addListener(() -> {
|
||||
mediaControllerListenableFuture.addListener(() -> {
|
||||
try {
|
||||
MediaController mediaController = activity.mediaControllerListenableFuture.get();
|
||||
MediaController mediaController = mediaControllerListenableFuture.get();
|
||||
|
||||
bind.playerBodyLayout.setPlayer(mediaController);
|
||||
|
||||
|
|
@ -139,7 +157,7 @@ public class PlayerBottomSheetFragment extends Fragment {
|
|||
setContentDuration(mediaController.getContentDuration());
|
||||
setPlayingState(mediaController.isPlaying());
|
||||
setHeaderMediaController();
|
||||
setHeaderNextButtonState(mediaController.hasNextMediaItem());
|
||||
// setHeaderNextButtonState(mediaController.hasNextMediaItem());
|
||||
|
||||
mediaController.addListener(new Player.Listener() {
|
||||
@Override
|
||||
|
|
@ -155,7 +173,12 @@ public class PlayerBottomSheetFragment extends Fragment {
|
|||
|
||||
@Override
|
||||
public void onMediaItemTransition(@Nullable MediaItem mediaItem, int reason) {
|
||||
setHeaderNextButtonState(mediaController.hasNextMediaItem());
|
||||
// setHeaderNextButtonState(mediaController.hasNextMediaItem());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPlaylistMetadataChanged(MediaMetadata mediaMetadata) {
|
||||
// setHeaderNextButtonState(mediaController.hasNextMediaItem());
|
||||
}
|
||||
});
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue