diff --git a/new-player/src/main/java/net/newpipe/newplayer/NewPlayer.kt b/new-player/src/main/java/net/newpipe/newplayer/NewPlayer.kt index 9c26e46..01893aa 100644 --- a/new-player/src/main/java/net/newpipe/newplayer/NewPlayer.kt +++ b/new-player/src/main/java/net/newpipe/newplayer/NewPlayer.kt @@ -78,4 +78,5 @@ interface NewPlayer { fun selectChapter(index: Int) fun playStream(item: String, streamVariant: String, playMode: PlayMode) fun release() + fun getItemLinkOfMediaItem(mediaItem: MediaItem) : String } diff --git a/new-player/src/main/java/net/newpipe/newplayer/NewPlayerImpl.kt b/new-player/src/main/java/net/newpipe/newplayer/NewPlayerImpl.kt index 3bcab9a..21f5f7e 100644 --- a/new-player/src/main/java/net/newpipe/newplayer/NewPlayerImpl.kt +++ b/new-player/src/main/java/net/newpipe/newplayer/NewPlayerImpl.kt @@ -279,8 +279,14 @@ class NewPlayerImpl( mutableExoPlayer.update { null } + mediaController = null + uniqueIdToIdLookup = HashMap() } + override fun getItemLinkOfMediaItem(mediaItem: MediaItem) = + uniqueIdToIdLookup[mediaItem.mediaId.toLong()] + ?: throw NewPlayerException("Could not find Media item with mediaId: ${mediaItem.mediaId}") + private fun internalPlayStream(mediaItem: MediaItem, playMode: PlayMode) { if (exoPlayer.value?.playbackState == Player.STATE_IDLE || exoPlayer.value == null) { prepare() @@ -313,7 +319,6 @@ class NewPlayerImpl( private suspend fun toMediaItem(item: String): MediaItem { - val availableStream = repository.getAvailableStreamVariants(item) var selectedStream = availableStream[availableStream.size / 2] for (preferredStream in preferredStreamVariants) { diff --git a/new-player/src/main/java/net/newpipe/newplayer/service/NewPlayerService.kt b/new-player/src/main/java/net/newpipe/newplayer/service/NewPlayerService.kt index 1da4800..d972970 100644 --- a/new-player/src/main/java/net/newpipe/newplayer/service/NewPlayerService.kt +++ b/new-player/src/main/java/net/newpipe/newplayer/service/NewPlayerService.kt @@ -47,7 +47,7 @@ private const val TAG = "NewPlayerService" @AndroidEntryPoint class NewPlayerService : MediaSessionService() { - private lateinit var mediaSession: MediaSession + private var mediaSession: MediaSession? = null private lateinit var customCommands: List @Inject @@ -89,7 +89,7 @@ class NewPlayerService : MediaSessionService() { controller: MediaSession.ControllerInfo ) { super.onPostConnect(session, controller) - mediaSession.setCustomLayout(customCommands.map { it.commandButton }) + mediaSession?.setCustomLayout(customCommands.map { it.commandButton }) } override fun onCustomCommand( @@ -130,7 +130,7 @@ class NewPlayerService : MediaSessionService() { override fun onDestroy() { super.onDestroy() newPlayer.release() - mediaSession.release() + mediaSession?.release() } override fun onTaskRemoved(rootIntent: Intent?) {