mirror of
https://github.com/antebudimir/tempus.git
synced 2026-01-01 18:03:33 +00:00
Moved MediaSession connection in fragment
This commit is contained in:
parent
ed3f0cfaa3
commit
9a2b0356c1
1 changed files with 32 additions and 16 deletions
|
|
@ -1,6 +1,7 @@
|
||||||
package com.cappielloantonio.play.ui.fragment;
|
package com.cappielloantonio.play.ui.fragment;
|
||||||
|
|
||||||
import android.annotation.SuppressLint;
|
import android.annotation.SuppressLint;
|
||||||
|
import android.content.ComponentName;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
|
|
@ -12,13 +13,15 @@ import androidx.fragment.app.Fragment;
|
||||||
import androidx.lifecycle.ViewModelProvider;
|
import androidx.lifecycle.ViewModelProvider;
|
||||||
import androidx.media3.common.MediaMetadata;
|
import androidx.media3.common.MediaMetadata;
|
||||||
import androidx.media3.common.Player;
|
import androidx.media3.common.Player;
|
||||||
import androidx.media3.session.MediaController;
|
import androidx.media3.session.MediaBrowser;
|
||||||
|
import androidx.media3.session.SessionToken;
|
||||||
|
|
||||||
import com.bumptech.glide.load.resource.bitmap.RoundedCorners;
|
import com.bumptech.glide.load.resource.bitmap.RoundedCorners;
|
||||||
import com.cappielloantonio.play.databinding.FragmentPlayerCoverBinding;
|
import com.cappielloantonio.play.databinding.FragmentPlayerCoverBinding;
|
||||||
import com.cappielloantonio.play.glide.CustomGlideRequest;
|
import com.cappielloantonio.play.glide.CustomGlideRequest;
|
||||||
import com.cappielloantonio.play.ui.activity.MainActivity;
|
import com.cappielloantonio.play.service.MediaService;
|
||||||
import com.cappielloantonio.play.viewmodel.PlayerBottomSheetViewModel;
|
import com.cappielloantonio.play.viewmodel.PlayerBottomSheetViewModel;
|
||||||
|
import com.google.common.util.concurrent.ListenableFuture;
|
||||||
import com.google.common.util.concurrent.MoreExecutors;
|
import com.google.common.util.concurrent.MoreExecutors;
|
||||||
|
|
||||||
public class PlayerCoverFragment extends Fragment {
|
public class PlayerCoverFragment extends Fragment {
|
||||||
|
|
@ -27,12 +30,10 @@ public class PlayerCoverFragment extends Fragment {
|
||||||
private FragmentPlayerCoverBinding bind;
|
private FragmentPlayerCoverBinding bind;
|
||||||
private PlayerBottomSheetViewModel playerBottomSheetViewModel;
|
private PlayerBottomSheetViewModel playerBottomSheetViewModel;
|
||||||
|
|
||||||
private MainActivity activity;
|
private ListenableFuture<MediaBrowser> mediaBrowserListenableFuture;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
|
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
|
||||||
activity = (MainActivity) requireActivity();
|
|
||||||
|
|
||||||
bind = FragmentPlayerCoverBinding.inflate(inflater, container, false);
|
bind = FragmentPlayerCoverBinding.inflate(inflater, container, false);
|
||||||
View view = bind.getRoot();
|
View view = bind.getRoot();
|
||||||
|
|
||||||
|
|
@ -42,24 +43,39 @@ public class PlayerCoverFragment extends Fragment {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onResume() {
|
public void onStart() {
|
||||||
super.onResume();
|
super.onStart();
|
||||||
|
initializeBrowser();
|
||||||
bindMediaController();
|
bindMediaController();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onStop() {
|
||||||
|
releaseBrowser();
|
||||||
|
super.onStop();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onDestroyView() {
|
public void onDestroyView() {
|
||||||
super.onDestroyView();
|
super.onDestroyView();
|
||||||
bind = null;
|
bind = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void bindMediaController() {
|
@SuppressLint("UnsafeOptInUsageError")
|
||||||
activity.mediaControllerListenableFuture.addListener(() -> {
|
private void initializeBrowser() {
|
||||||
try {
|
mediaBrowserListenableFuture = new MediaBrowser.Builder(requireContext(), new SessionToken(requireContext(), new ComponentName(requireContext(), MediaService.class))).buildAsync();
|
||||||
MediaController mediaController = activity.mediaControllerListenableFuture.get();
|
}
|
||||||
|
|
||||||
setMediaControllerListener(mediaController);
|
private void releaseBrowser() {
|
||||||
|
MediaBrowser.releaseFuture(mediaBrowserListenableFuture);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void bindMediaController() {
|
||||||
|
mediaBrowserListenableFuture.addListener(() -> {
|
||||||
|
try {
|
||||||
|
MediaBrowser mediaBrowseri = mediaBrowserListenableFuture.get();
|
||||||
|
|
||||||
|
setMediaBrowserListener(mediaBrowseri);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
Log.e(TAG, e.getMessage());
|
Log.e(TAG, e.getMessage());
|
||||||
}
|
}
|
||||||
|
|
@ -67,10 +83,10 @@ public class PlayerCoverFragment extends Fragment {
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressLint("UnsafeOptInUsageError")
|
@SuppressLint("UnsafeOptInUsageError")
|
||||||
private void setMediaControllerListener(MediaController mediaController) {
|
private void setMediaBrowserListener(MediaBrowser mediaBrowser) {
|
||||||
setCover(mediaController.getMediaMetadata());
|
setCover(mediaBrowser.getMediaMetadata());
|
||||||
|
|
||||||
mediaController.addListener(new Player.Listener() {
|
mediaBrowser.addListener(new Player.Listener() {
|
||||||
@Override
|
@Override
|
||||||
public void onMediaMetadataChanged(@NonNull MediaMetadata mediaMetadata) {
|
public void onMediaMetadataChanged(@NonNull MediaMetadata mediaMetadata) {
|
||||||
setCover(mediaMetadata);
|
setCover(mediaMetadata);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue