From 023bd8071ad2594f8a19cd63c863cb96d5e842e3 Mon Sep 17 00:00:00 2001 From: eddyizm Date: Thu, 22 Jan 2026 22:09:49 -0800 Subject: [PATCH] =?UTF-8?q?fix:=20use=20existing=20future=20when=20adding?= =?UTF-8?q?=20tracks,=20dialed=20random=20album=20trac=E2=80=A6=20(#373)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit fix: use existing future when adding tracks, dialed random album tracks back to 100, vs 1000. --- .../tempo/service/BaseMediaService.kt | 10 ++++++++-- .../tempo/service/MediaManager.java | 17 ++++++----------- .../tempo/viewmodel/HomeViewModel.java | 2 +- 3 files changed, 15 insertions(+), 14 deletions(-) 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) {