diff --git a/.devcontainer.json b/.devcontainer.json new file mode 100644 index 00000000..bed109a0 --- /dev/null +++ b/.devcontainer.json @@ -0,0 +1,17 @@ +{ + "image": "mcr.microsoft.com/devcontainers/universal:2", + "postCreateCommand": "sudo chown $(whoami) /opt/android/", + "features": { + "ghcr.io/devcontainers/features/java:latest": { + "version": "17" + }, + "ghcr.io/akhildevelops/devcontainer-features/android-cli:0": {} + }, + "customizations": { + "vscode": { + "extensions": [ + "fwcd.kotlin" + ] + } + } +} diff --git a/app/src/main/java/com/lagradost/cloudstream3/ui/player/CS3IPlayer.kt b/app/src/main/java/com/lagradost/cloudstream3/ui/player/CS3IPlayer.kt index 2067eb04..e46bd885 100644 --- a/app/src/main/java/com/lagradost/cloudstream3/ui/player/CS3IPlayer.kt +++ b/app/src/main/java/com/lagradost/cloudstream3/ui/player/CS3IPlayer.kt @@ -90,6 +90,7 @@ class CS3IPlayer : IPlayer { private var currentLink: ExtractorLink? = null private var currentDownloadedFile: ExtractorUri? = null private var hasUsedFirstRender = false + private var shouldPauseUnfocused = true private var currentWindow: Int = 0 private var playbackPosition: Long = 0 @@ -509,7 +510,8 @@ class CS3IPlayer : IPlayer { override fun onPause() { Log.i(TAG, "onPause") saveData() - exoPlayer?.pause() + if (shouldPauseUnfocused) + exoPlayer?.pause() //releasePlayer() } @@ -964,6 +966,11 @@ class CS3IPlayer : IPlayer { embeddedSubtitlesFetched?.invoke(exoPlayerReportedTracks) onTracksInfoChanged?.invoke() subtitlesUpdates?.invoke() + + // if there are no video tracks, but there are audio tracks, don't pause playback while in background + val videoTrackCount = tracks.groups.filter { it.type == TRACK_TYPE_VIDEO }.size + val audioTrackCount = tracks.groups.filter { it.type == TRACK_TYPE_AUDIO }.size + shouldPauseUnfocused = videoTrackCount > 0 || audioTrackCount == 0 } }