implementation 'com.google.android.exoplayer:exoplayer:2.11.6'
<com.google.android.exoplayer2.ui.PlayerView android:id="@+id/playerView" android:layout_width="match_parent" android:layout_height="match_parent" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" />
class MainActivity : AppCompatActivity() { private var mPlayer: SimpleExoPlayer? = null private var playWhenReady = true private var currentWindow = 0 private var playbackPosition: Long = 0 private val hlsUrl = "https://bitdash-a.akamaihd.net/content/MI201109210084_1/m3u8s/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.m3u8" override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) } private fun initPlayer(){ mPlayer = SimpleExoPlayer.Builder(this).build() // Bind the player to the view. playerView.player = mPlayer mPlayer!!.playWhenReady = true mPlayer!!.seekTo(playbackPosition) mPlayer!!.prepare(buildMediaSource(), false, false) } override fun onStart() { super.onStart() if (Util.SDK_INT >= 24) { initPlayer() } } override fun onResume() { super.onResume() hideSystemUi() if (Util.SDK_INT < 24 || mPlayer == null) { initPlayer() } } override fun onPause() { super.onPause() if (Util.SDK_INT < 24) { releasePlayer() } } override fun onStop() { super.onStop() if (Util.SDK_INT >= 24) { releasePlayer() } } @SuppressLint("InlinedApi") private fun hideSystemUi() { playerView.systemUiVisibility = (View.SYSTEM_UI_FLAG_LOW_PROFILE or View.SYSTEM_UI_FLAG_FULLSCREEN or View.SYSTEM_UI_FLAG_LAYOUT_STABLE or View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY or View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION or View.SYSTEM_UI_FLAG_HIDE_NAVIGATION) } private fun releasePlayer() { if (mPlayer == null) { return } playWhenReady = mPlayer!!.playWhenReady playbackPosition = mPlayer!!.currentPosition currentWindow = mPlayer!!.currentWindowIndex mPlayer!!.release() mPlayer = null } private fun buildMediaSource(): MediaSource { val userAgent = Util.getUserAgent(playerView.context, playerView.context.getString(R.string.app_name)) val dataSourceFactory = DefaultHttpDataSourceFactory(userAgent) val hlsMediaSource = HlsMediaSource.Factory(dataSourceFactory). createMediaSource(Uri.parse(hlsUrl)) return hlsMediaSource } }