Skip to content

Player is black for a few seconds after coming back from background.

Hi,

If I put the app in background and come back to it the player is black for about 3-5 seconds, but the sound is played. After about 5 sec the image appears. Do you know how this can be fixed?

Here is my code:

class PlayerActivity : AppCompatActivity() {

    private val USE_TEXTURE_VIEW = false
    private val ENABLE_SUBTITLES = true
    private var mVideoLayout: VLCVideoLayout? = null
    private var mLibVLC: LibVLC? = null
    private var mMediaPlayer: MediaPlayer? = null
    private var streamUrl:String? = null
    var isMediaSet = false

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        streamUrl = intent.getStringExtra("STREAM_URL")
        setContentView(R.layout.activity_player)
        val args = ArrayList<String>()
        args.add("-vvv")
        args.add(":http-reconnect")
        mLibVLC = LibVLC(this, args)
        mMediaPlayer = MediaPlayer(mLibVLC)
        mVideoLayout = findViewById(R.id.videoView)
        window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
            hideSystemUI()
        }
        setUpMediaPlayerEvents()
    }

    override fun onDestroy() {
        super.onDestroy()
        mMediaPlayer!!.release()
        mLibVLC!!.release()
    }

    override fun onStart() {
        super.onStart()
        mMediaPlayer!!.attachViews(
            mVideoLayout!!,
            null,
            ENABLE_SUBTITLES,
            USE_TEXTURE_VIEW
        )
        if (!isMediaSet){
            isMediaSet = true
            val media = Media(
                mLibVLC,
                Uri.parse(streamUrl)
            )
            mMediaPlayer!!.media = media
            media.release()
        }
        mMediaPlayer!!.play()
    }

    override fun onStop() {
        super.onStop()
        mMediaPlayer!!.pause()
        mMediaPlayer!!.detachViews()
    }

    private fun setUpMediaPlayerEvents(){
        mMediaPlayer?.setEventListener(object: MediaPlayer.EventListener{
            override fun onEvent(event: MediaPlayer.Event?) {
                println("event = ${event.toString()}")
            }
        })
    }

    override fun onWindowFocusChanged(hasFocus: Boolean) {
        super.onWindowFocusChanged(hasFocus)
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
            hideSystemUI()
        }
    }
}