How to implement Exoplayer 2.11.1 in android?

后端 未结 2 1269
一生所求
一生所求 2021-02-09 06:15

i am trying to implement exoplayer this is my exoplayer version

implementation \'com.google.android.exoplayer:exoplayer:2.11.1\'

i

2条回答
  •  迷失自我
    2021-02-09 06:29

    I also faced this problem and this my solution

    Declaration

    private val exoPlayer: SimpleExoPlayer by lazy { SimpleExoPlayer.Builder(this).build()}
    

    Play Song

    private fun prepareExoPlayerFromURL(url: String) {
            val dataSourceFactory =
                DefaultDataSourceFactory(this, Util.getUserAgent(this, resources.getString(R.string.app_name)), null)
            val extractorsFactory = DefaultExtractorsFactory()
    //        val audioSource = ExtractorMediaSource(uri, dataSourceFactory, extractorsFactory, null, null)
    
            val concateMediaSource = ConcatenatingMediaSource()
    
            // to play from song list
            for (i in mSongList) {      // song list song arraylist
                val mediaSource = ProgressiveMediaSource
                    .Factory(
                        DefaultDataSourceFactory(this, dataSourceFactory),
                        DefaultExtractorsFactory()
                    )
                    .createMediaSource(Uri.parse(i.musicFile)/*Uri.parse(i.uri)*/)
                concateMediaSource.addMediaSource(mediaSource)
            }
    
            // to play single song
           /* val audioSource = ProgressiveMediaSource
                .Factory(
                    DefaultDataSourceFactory(this, dataSourceFactory),
                    DefaultExtractorsFactory()
                )
                .createMediaSource(Uri.parse(url))*/
    
            exoPlayer.prepare(concateMediaSource/*audioSource*/)
            exoPlayer.seekToDefaultPosition(songPosition)
            exoPlayer.playWhenReady = true
    
            setNotification()
        }
    

    to set listener of player and notification

    private fun setListoner() {
            exoPlayer.addListener(object : Player.EventListener {
                override fun onPlayerStateChanged(playWhenReady: Boolean, playbackState: Int) {
                    when (playbackState) {
                        Player.STATE_BUFFERING -> Log.e(TAG,"STATE_BUFFERING")
                        Player.STATE_ENDED -> Log.e(TAG,"STATE_ENDED")
                        Player.STATE_IDLE -> Log.e(TAG,"STATE_IDLE")
                        Player.STATE_READY ->{
                            if (playWhenReady) {
                                Log.e(TAG, "PlaybackStatus.PLAYING")
                            } else {
                                Log.e(TAG, "PlaybackStatus.PAUSED")
                            }
                        }
                        else -> Log.e(TAG,"PlaybackStatus.IDLE")
                    }
                }
            })
        }
    

    to Kill player

     private fun onDestroy() {
            if (exoPlayer != null) {
                exoPlayer.release()
                exoPlayer = null
                mediaSource = null
            }
        }
    

    for more detail you can see official documentation

    The Universal Music Player uses ExoPlayer for local audio playback.

    Building feature-rich media apps with ExoPlayer (Google I/O '18)

提交回复
热议问题