From 227e6b1ec0e740427aac8ecad701b500e88b8e5f Mon Sep 17 00:00:00 2001 From: Jan Guegel Date: Thu, 11 Dec 2025 14:31:27 +0100 Subject: [PATCH 1/5] add new argument ThirdPartyIntent to use fallback with Player --- .../musicplayer/activities/SimpleControllerActivity.kt | 4 ++-- .../org/fossify/musicplayer/activities/TrackActivity.kt | 2 +- .../kotlin/org/fossify/musicplayer/extensions/Player.kt | 8 +++++++- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/app/src/main/kotlin/org/fossify/musicplayer/activities/SimpleControllerActivity.kt b/app/src/main/kotlin/org/fossify/musicplayer/activities/SimpleControllerActivity.kt index d6fe6a74a..755665842 100644 --- a/app/src/main/kotlin/org/fossify/musicplayer/activities/SimpleControllerActivity.kt +++ b/app/src/main/kotlin/org/fossify/musicplayer/activities/SimpleControllerActivity.kt @@ -52,7 +52,7 @@ abstract class SimpleControllerActivity : SimpleActivity(), Player.Listener { fun withPlayer(callback: MediaController.() -> Unit) = controller.withController(callback) - fun prepareAndPlay(tracks: List, startIndex: Int = 0, startPositionMs: Long = 0, startActivity: Boolean = true) { + fun prepareAndPlay(tracks: List, startIndex: Int = 0, startPositionMs: Long = 0, startActivity: Boolean = true, thirdPartyIntent: Boolean = false) { withPlayer { if (startActivity) { startActivity( @@ -60,7 +60,7 @@ abstract class SimpleControllerActivity : SimpleActivity(), Player.Listener { ) } - prepareUsingTracks(tracks = tracks, startIndex = startIndex, startPositionMs = startPositionMs, play = true) { success -> + prepareUsingTracks(tracks = tracks, startIndex = startIndex, startPositionMs = startPositionMs, play = true, thirdPartyIntent = thirdPartyIntent) { success -> if (success) { updatePlaybackInfo(this) } diff --git a/app/src/main/kotlin/org/fossify/musicplayer/activities/TrackActivity.kt b/app/src/main/kotlin/org/fossify/musicplayer/activities/TrackActivity.kt index 5f56e2b24..9b70a821b 100644 --- a/app/src/main/kotlin/org/fossify/musicplayer/activities/TrackActivity.kt +++ b/app/src/main/kotlin/org/fossify/musicplayer/activities/TrackActivity.kt @@ -144,7 +144,7 @@ class TrackActivity : SimpleControllerActivity(), PlaybackSpeedListener { getTrackFromUri(intent.data) { track -> runOnUiThread { if (track != null) { - prepareAndPlay(listOf(track), startActivity = false) + prepareAndPlay(listOf(track), startActivity = false, thirdPartyIntent = isThirdPartyIntent) } else { toast(org.fossify.commons.R.string.unknown_error_occurred) finish() diff --git a/app/src/main/kotlin/org/fossify/musicplayer/extensions/Player.kt b/app/src/main/kotlin/org/fossify/musicplayer/extensions/Player.kt index 24e04eb3f..3b6e0fc38 100644 --- a/app/src/main/kotlin/org/fossify/musicplayer/extensions/Player.kt +++ b/app/src/main/kotlin/org/fossify/musicplayer/extensions/Player.kt @@ -7,6 +7,7 @@ import androidx.media3.common.Player import org.fossify.commons.helpers.ensureBackgroundThread import org.fossify.musicplayer.helpers.PlaybackSetting import org.fossify.musicplayer.models.Track +import org.fossify.musicplayer.models.toMediaItems import org.fossify.musicplayer.models.toMediaItemsFast val Player.isReallyPlaying: Boolean @@ -140,6 +141,7 @@ fun Player.prepareUsingTracks( startIndex: Int = 0, startPositionMs: Long = 0, play: Boolean = false, + thirdPartyIntent: Boolean = false, callback: ((success: Boolean) -> Unit)? = null ) { if (tracks.isEmpty()) { @@ -149,7 +151,11 @@ fun Player.prepareUsingTracks( return } - val mediaItems = tracks.toMediaItemsFast() + val mediaItems = if(thirdPartyIntent) { + tracks.toMediaItems() + } else { + tracks.toMediaItemsFast() + } runOnPlayerThread { setMediaItems(mediaItems, startIndex, startPositionMs) playWhenReady = play From 958047296aba35c35381c28d9ecd0607f06b21da Mon Sep 17 00:00:00 2001 From: Jan Guegel Date: Thu, 11 Dec 2025 14:36:11 +0100 Subject: [PATCH 2/5] add changelog.md message --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 90d0cc500..de9ae4642 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed - Tapping notification now launches the "Now playing" screen ([#179]) +### Fixed +- Fixed playing files from directory with ".nomedia" ([#114]) + ## [1.6.0] - 2025-11-09 ### Changed - Player now respects play/pause state when seeking ([#97]) @@ -92,6 +95,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 [#47]: https://github.com/FossifyOrg/Music-Player/issues/47 [#65]: https://github.com/FossifyOrg/Music-Player/issues/65 [#97]: https://github.com/FossifyOrg/Music-Player/issues/97 +[#114]: https://github.com/FossifyOrg/Music-Player/issues/114 [#179]: https://github.com/FossifyOrg/Music-Player/issues/179 [#206]: https://github.com/FossifyOrg/Music-Player/issues/206 [#209]: https://github.com/FossifyOrg/Music-Player/issues/209 From 6699e6fe692d6a831c92974e4ef70ac01cd1a15d Mon Sep 17 00:00:00 2001 From: Jan Guegel Date: Sun, 14 Dec 2025 19:55:52 +0100 Subject: [PATCH 3/5] set thirdPartyIntent to FLAG_MANUAL_CACHE fixes #115 --- .../kotlin/org/fossify/musicplayer/extensions/Player.kt | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/app/src/main/kotlin/org/fossify/musicplayer/extensions/Player.kt b/app/src/main/kotlin/org/fossify/musicplayer/extensions/Player.kt index 34276fa52..0d1f397c7 100644 --- a/app/src/main/kotlin/org/fossify/musicplayer/extensions/Player.kt +++ b/app/src/main/kotlin/org/fossify/musicplayer/extensions/Player.kt @@ -5,6 +5,7 @@ import androidx.media3.common.C import androidx.media3.common.MediaItem import androidx.media3.common.Player import org.fossify.commons.helpers.ensureBackgroundThread +import org.fossify.musicplayer.helpers.FLAG_MANUAL_CACHE import org.fossify.musicplayer.helpers.PlaybackSetting import org.fossify.musicplayer.helpers.RESTART_ON_PREVIOUS_THRESHOLD import org.fossify.musicplayer.models.Track @@ -150,7 +151,12 @@ fun Player.prepareUsingTracks( } val mediaItems = if(thirdPartyIntent) { - tracks.toMediaItems() + tracks.map { track -> + if (track.mediaStoreId == 0L) { + track.flags = track.flags or FLAG_MANUAL_CACHE + } + track.toMediaItem() + } } else { tracks.toMediaItemsFast() } From 7b57f03113dd75393d94f974cf8af4940d280d45 Mon Sep 17 00:00:00 2001 From: Jan Guegel Date: Sun, 14 Dec 2025 21:16:30 +0100 Subject: [PATCH 4/5] if FLAG_MANUAL_CACHE is set, no update to CurrentTrack --- .../kotlin/org/fossify/musicplayer/views/CurrentTrackBar.kt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/src/main/kotlin/org/fossify/musicplayer/views/CurrentTrackBar.kt b/app/src/main/kotlin/org/fossify/musicplayer/views/CurrentTrackBar.kt index 8dc8e7127..eed77e353 100644 --- a/app/src/main/kotlin/org/fossify/musicplayer/views/CurrentTrackBar.kt +++ b/app/src/main/kotlin/org/fossify/musicplayer/views/CurrentTrackBar.kt @@ -16,6 +16,7 @@ import org.fossify.musicplayer.R import org.fossify.musicplayer.databinding.ViewCurrentTrackBarBinding import org.fossify.musicplayer.extensions.* import androidx.core.graphics.drawable.toDrawable +import org.fossify.musicplayer.helpers.FLAG_MANUAL_CACHE class CurrentTrackBar(context: Context, attributeSet: AttributeSet) : RelativeLayout(context, attributeSet) { private val binding by viewBinding(ViewCurrentTrackBarBinding::bind) @@ -33,7 +34,7 @@ class CurrentTrackBar(context: Context, attributeSet: AttributeSet) : RelativeLa fun updateCurrentTrack(mediaItem: MediaItem?) { val track = mediaItem?.toTrack() - if (track == null) { + if (track == null || track.flags == FLAG_MANUAL_CACHE) { fadeOut() return } else { From 6162527bae805bfddd9a8812e9553b2991998f7b Mon Sep 17 00:00:00 2001 From: Jan Guegel Date: Sun, 14 Dec 2025 21:21:12 +0100 Subject: [PATCH 5/5] fix changelog --- CHANGELOG.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a0e551e4f..3b0306f02 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,7 +12,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Fixed an issue where removing a track from a playlist removed it from all playlists ([#69]) - Fixed playing files from directory with ".nomedia" ([#114]) - ## [1.6.0] - 2025-11-09 ### Changed - Player now respects play/pause state when seeking ([#97]) @@ -96,7 +95,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 [#45]: https://github.com/FossifyOrg/Music-Player/issues/45 [#47]: https://github.com/FossifyOrg/Music-Player/issues/47 [#65]: https://github.com/FossifyOrg/Music-Player/issues/65 +[#69]: https://github.com/FossifyOrg/Music-Player/issues/69 [#97]: https://github.com/FossifyOrg/Music-Player/issues/97 +[#114]: https://github.com/FossifyOrg/Music-Player/issues/114 [#179]: https://github.com/FossifyOrg/Music-Player/issues/179 [#206]: https://github.com/FossifyOrg/Music-Player/issues/206 [#209]: https://github.com/FossifyOrg/Music-Player/issues/209