diff --git a/libs/pandautils/src/main/java/com/instructure/pandautils/activities/BaseViewMediaActivity.kt b/libs/pandautils/src/main/java/com/instructure/pandautils/activities/BaseViewMediaActivity.kt index 07732b7aaf..a89c1d4872 100644 --- a/libs/pandautils/src/main/java/com/instructure/pandautils/activities/BaseViewMediaActivity.kt +++ b/libs/pandautils/src/main/java/com/instructure/pandautils/activities/BaseViewMediaActivity.kt @@ -215,6 +215,9 @@ abstract class BaseViewMediaActivity : BaseCanvasActivity() { override fun onResume() { super.onResume() + // Pause all other playing videos to prevent multiple videos playing simultaneously + ExoAgent.pauseAllOtherAgents(mUri) + val fileFolderDeletedEvent = EventBus.getDefault().getStickyEvent(FileFolderDeletedEvent::class.java) if (fileFolderDeletedEvent != null) finish() diff --git a/libs/pandautils/src/main/java/com/instructure/pandautils/utils/ExoPlayerHelper.kt b/libs/pandautils/src/main/java/com/instructure/pandautils/utils/ExoPlayerHelper.kt index 7182c16604..0286387dd1 100644 --- a/libs/pandautils/src/main/java/com/instructure/pandautils/utils/ExoPlayerHelper.kt +++ b/libs/pandautils/src/main/java/com/instructure/pandautils/utils/ExoPlayerHelper.kt @@ -251,5 +251,18 @@ class ExoAgent private constructor(val uri: Uri) { fun releaseAllAgents() { agentInstances.values.forEach { it.release() } } + + /** Pauses all agents except the one associated with the specified Uri */ + fun pauseAllOtherAgents(currentUri: Uri) { + agentInstances.forEach { (uriString, agent) -> + if (uriString != currentUri.toString()) { + agent.mPlayer?.let { + if (it.isPlaying) { + it.playWhenReady = false + } + } + } + } + } } }