diff --git a/app/src/main/java/com/cappielloantonio/tempo/service/BaseMediaService.kt b/app/src/main/java/com/cappielloantonio/tempo/service/BaseMediaService.kt index 6f5fc52d..c8cb846f 100644 --- a/app/src/main/java/com/cappielloantonio/tempo/service/BaseMediaService.kt +++ b/app/src/main/java/com/cappielloantonio/tempo/service/BaseMediaService.kt @@ -4,6 +4,7 @@ import android.annotation.SuppressLint import android.app.PendingIntent.FLAG_IMMUTABLE import android.app.PendingIntent.FLAG_UPDATE_CURRENT import android.app.TaskStackBuilder +import android.content.ComponentName import android.content.Context import android.content.Intent import android.net.ConnectivityManager @@ -138,8 +139,13 @@ open class BaseMediaService : MediaLibraryService() { if (item.mediaMetadata.extras != null) MediaManager.scrobble(item, false) - if (player.nextMediaItemIndex == C.INDEX_UNSET) - MediaManager.continuousPlay(player.currentMediaItem) + if (player.nextMediaItemIndex == C.INDEX_UNSET) { + val browserFuture = MediaBrowser.Builder( + this@BaseMediaService, + SessionToken(this@BaseMediaService, ComponentName(this@BaseMediaService, this@BaseMediaService::class.java)) + ).buildAsync() + MediaManager.continuousPlay(player.currentMediaItem, browserFuture) + } } if (player is ExoPlayer) { 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 ba2cee60..44c5f974 100644 --- a/app/src/main/java/com/cappielloantonio/tempo/service/MediaManager.java +++ b/app/src/main/java/com/cappielloantonio/tempo/service/MediaManager.java @@ -444,25 +444,20 @@ public class MediaManager { } @OptIn(markerClass = UnstableApi.class) - public static void continuousPlay(MediaItem mediaItem) { + public static void continuousPlay(MediaItem mediaItem, ListenableFuture existingBrowserFuture) { if (mediaItem != null && Preferences.isContinuousPlayEnabled() && Preferences.isInstantMixUsable()) { Preferences.setLastInstantMix(); - LiveData> instantMix = getSongRepository().getContinuousMix(mediaItem.mediaId,25); + LiveData> instantMix = getSongRepository().getContinuousMix(mediaItem.mediaId, 25); instantMix.observeForever(new Observer>() { @Override public void onChanged(List media) { - if (media != null) { - Log.e(TAG, "continuous play"); - ListenableFuture mediaBrowserListenableFuture = new MediaBrowser.Builder( - App.getContext(), - new SessionToken(App.getContext(), new ComponentName(App.getContext(), MediaService.class)) - ).buildAsync(); - - enqueue(mediaBrowserListenableFuture, media, true); + if (media != null && existingBrowserFuture != null) { + Log.d(TAG, "Continuous play: adding " + media.size() + " tracks"); + enqueue(existingBrowserFuture, media, false); } - + instantMix.removeObserver(this); } }); diff --git a/app/src/main/java/com/cappielloantonio/tempo/viewmodel/HomeViewModel.java b/app/src/main/java/com/cappielloantonio/tempo/viewmodel/HomeViewModel.java index 42ff0b25..3cd90d0d 100644 --- a/app/src/main/java/com/cappielloantonio/tempo/viewmodel/HomeViewModel.java +++ b/app/src/main/java/com/cappielloantonio/tempo/viewmodel/HomeViewModel.java @@ -101,7 +101,7 @@ public class HomeViewModel extends AndroidViewModel { } public LiveData> getRandomShuffleSample() { - return songRepository.getRandomSample(1000, null, null); + return songRepository.getRandomSample(100, null, null); } public LiveData> getChronologySample(LifecycleOwner owner) {