Player.EventListener is deprecated how to use instead of Player.Listener in Java

Viewed 5780

In Exoplayer version 2.14.1 Playerd.EventListener() is deprecated. when I read docs its says use instead of Player.Listener, but I have no idea how to use that method like below code.

simpleExoPlayer.addListener(new Player.EventListener() {
            @Override
            public void onPlaybackStateChanged(int state) {
                if (state == simpleExoPlayer.STATE_READY) {

                    aspectRatioFrameLayout.setAspectRatio(16f / 9f);
                } else {
                    playerView.hideController();
                }
            }
        });
4 Answers

As per there Documentation you would want something like:

simpleExoPlayer.addListener(new Player.Listener() {
        @Override
        public void onPlaybackStateChanged(@State int state) {
            if (state == Player.STATE_READY) {

                aspectRatioFrameLayout.setAspectRatio(16f / 9f);
            } else {
                playerView.hideController();
            }
        }
    });

In Kotlin use this code, for more details refer to this Documentation

 player!!.addListener(object : Player.Listener { // player listener

            override fun onPlayerStateChanged(playWhenReady: Boolean, playbackState: Int) {
                when (playbackState) { // check player play back state
                    Player.STATE_READY -> {
                      aspectRatioFrameLayout.setAspectRatio(16f / 9f)
                    }
                    Player.STATE_ENDED -> { 
                         //your logic 
                    }
                    Player.STATE_BUFFERING ->{ 
                         //your logic 
                    }
                    Player.STATE_IDLE -> { 
                         //your logic 
                    }
                    else -> {
                       playerView.hideController()
                    }
                }
            }
        })
        exoPlayer.addListener(new Player.Listener() {
            public void onPlaybackStateChanged(int playbackState) {
                if(playbackState == Player.STATE_ENDED){
                    ..............
                }
            }
        });

This works for me on March 2022

Now in player version 2 it has changed

player?.addListener(object :Player.EventListener{

        override fun onPlayerStateChanged(playWhenReady: Boolean, playbackState: Int) {
            super.onPlayerStateChanged(playWhenReady, playbackState)
            if (playbackState == Player.STATE_READY) {
                
            } else {
               
            }
        }
    })
Related