diff --git a/CHANGELOG.md b/CHANGELOG.md index 0e5cdaa3..fb53168f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Fixed - 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 @@ -99,6 +100,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 [#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 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 d6fe6a74..75566584 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 455de882..d30f263c 100644 --- a/app/src/main/kotlin/org/fossify/musicplayer/activities/TrackActivity.kt +++ b/app/src/main/kotlin/org/fossify/musicplayer/activities/TrackActivity.kt @@ -188,7 +188,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 b06cb514..0d1f397c 100644 --- a/app/src/main/kotlin/org/fossify/musicplayer/extensions/Player.kt +++ b/app/src/main/kotlin/org/fossify/musicplayer/extensions/Player.kt @@ -5,9 +5,11 @@ 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 +import org.fossify.musicplayer.models.toMediaItems import org.fossify.musicplayer.models.toMediaItemsFast val Player.isReallyPlaying: Boolean @@ -138,6 +140,7 @@ fun Player.prepareUsingTracks( startIndex: Int = 0, startPositionMs: Long = 0, play: Boolean = false, + thirdPartyIntent: Boolean = false, callback: ((success: Boolean) -> Unit)? = null ) { if (tracks.isEmpty()) { @@ -147,7 +150,16 @@ fun Player.prepareUsingTracks( return } - val mediaItems = tracks.toMediaItemsFast() + val mediaItems = if(thirdPartyIntent) { + tracks.map { track -> + if (track.mediaStoreId == 0L) { + track.flags = track.flags or FLAG_MANUAL_CACHE + } + track.toMediaItem() + } + } else { + tracks.toMediaItemsFast() + } runOnPlayerThread { setMediaItems(mediaItems, startIndex, startPositionMs) playWhenReady = play 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 8dc8e712..eed77e35 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 {