ananas/app/src/main/java/dev/jdtech/jellyfin/PlayerActivity.kt
2021-08-13 17:38:32 +02:00

68 lines
2.2 KiB
Kotlin

package dev.jdtech.jellyfin
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.view.View
import android.view.WindowManager
import androidx.activity.viewModels
import androidx.navigation.navArgs
import com.google.android.exoplayer2.ui.StyledPlayerView
import dagger.hilt.android.AndroidEntryPoint
import dev.jdtech.jellyfin.viewmodels.PlayerActivityViewModel
import timber.log.Timber
@AndroidEntryPoint
class PlayerActivity : AppCompatActivity() {
private val viewModel: PlayerActivityViewModel by viewModels()
private val args: PlayerActivityArgs by navArgs()
private lateinit var playerView: StyledPlayerView
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
Timber.d("Creating player activity")
setContentView(R.layout.activity_player)
window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
playerView = findViewById(R.id.video_view)
viewModel.player.observe(this, {
playerView.player = it
})
viewModel.navigateBack.observe(this, {
if (it) {
onBackPressed()
}
})
if (viewModel.player.value == null) {
viewModel.initializePlayer(args.items, args.playbackPosition)
}
hideSystemUI()
}
override fun onPause() {
super.onPause()
viewModel.playWhenReady = viewModel.player.value?.playWhenReady == true
playerView.player?.playWhenReady = false
}
override fun onResume() {
super.onResume()
viewModel.player.value?.playWhenReady = viewModel.playWhenReady
hideSystemUI()
}
@Suppress("DEPRECATION")
private fun hideSystemUI() {
// These methods are deprecated but we still use them because the new WindowInsetsControllerCompat has a bug which makes the action bar reappear
window.decorView.systemUiVisibility = (View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY or
View.SYSTEM_UI_FLAG_FULLSCREEN or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN or
View.SYSTEM_UI_FLAG_HIDE_NAVIGATION or View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION)
window.addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN)
}
}