resume to position if player was in background, keep screen on in player

This commit is contained in:
Jannik 2020-10-11 15:19:42 +02:00
parent e093153eee
commit 1d3c8ca14b
Signed by: Seil0
GPG Key ID: E8459F3723C52C24
5 changed files with 33 additions and 6 deletions

View File

@ -11,9 +11,10 @@ android {
minSdkVersion 23
targetSdkVersion 30
versionCode 1
versionName "1.0"
versionName "0.1-alpha1"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
setProperty("archivesBaseName", "teapod-$versionName")
}
buildTypes {

View File

@ -103,7 +103,7 @@ class MainActivity : AppCompatActivity(), BottomNavigationView.OnNavigationItemS
fun startPlayer(streamUrl: String) {
val intent = Intent(this, PlayerActivity::class.java).apply {
putExtra("streamUrl", streamUrl)
putExtra(getString(R.string.intent_stream_url), streamUrl)
}
startActivity(intent)
}

View File

@ -36,7 +36,13 @@ class PlayerActivity : AppCompatActivity() {
setContentView(R.layout.activity_player)
hideBars() // Initial hide the bars
streamUrl = intent.getStringExtra("streamUrl").toString()
savedInstanceState?.let {
currentWindow = it.getInt(getString(R.string.state_resume_window))
playbackPosition = it.getLong(getString(R.string.state_resume_position))
playWhenReady = it.getBoolean(getString(R.string.state_is_playing))
}
streamUrl = intent.getStringExtra(getString(R.string.intent_stream_url)).toString()
}
@ -72,6 +78,13 @@ class PlayerActivity : AppCompatActivity() {
}
}
override fun onSaveInstanceState(outState: Bundle) {
outState.putInt(getString(R.string.state_resume_window), currentWindow)
outState.putLong(getString(R.string.state_resume_position), playbackPosition)
outState.putBoolean(getString(R.string.state_is_playing), playWhenReady)
super.onSaveInstanceState(outState)
}
private fun initPlayer() {
if (streamUrl.isEmpty()) {
Log.e(javaClass.name, "No stream url was set.")
@ -84,9 +97,11 @@ class PlayerActivity : AppCompatActivity() {
val mediaSource = HlsMediaSource.Factory(dataSourceFactory)
.createMediaSource(MediaItem.fromUri(Uri.parse(streamUrl)))
player.playWhenReady = playWhenReady
player.setMediaSource(mediaSource)
player.seekTo(playbackPosition)
player.prepare()
player.play()
player.addListener(object : Player.EventListener {
override fun onPlaybackStateChanged(state: Int) {
@ -127,8 +142,12 @@ class PlayerActivity : AppCompatActivity() {
}
} else {
@Suppress("deprecation")
window.decorView.systemUiVisibility =
(View.SYSTEM_UI_FLAG_FULLSCREEN or View.SYSTEM_UI_FLAG_HIDE_NAVIGATION)
window.decorView.systemUiVisibility = (View.SYSTEM_UI_FLAG_IMMERSIVE
or View.SYSTEM_UI_FLAG_LAYOUT_STABLE
or View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
or View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
or View.SYSTEM_UI_FLAG_FULLSCREEN)
}
}
}

View File

@ -4,6 +4,7 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:keepScreenOn="true"
android:background="#000000"
tools:context=".PlayerActivity">

View File

@ -18,4 +18,10 @@
<string name="encrypted_preference_file_key" translatable="false">org.mosad.teapod.encrypted_preferences</string>
<string name="save_key_user_login" translatable="false">org.mosad.teapod.user_login</string>
<string name="save_key_user_password" translatable="false">org.mosad.teapod.user_password</string>
<!-- intents & states -->
<string name="intent_stream_url" translatable="false">intent_stream_url</string>
<string name="state_resume_window" translatable="false">state_resume_window</string>
<string name="state_resume_position" translatable="false">state_resume_position</string>
<string name="state_is_playing" translatable="false">state_is_playing</string>
</resources>