From 1d3c8ca14bbbdaf1e89ea779738b3bff98252bcc Mon Sep 17 00:00:00 2001 From: Jannik Date: Sun, 11 Oct 2020 15:19:42 +0200 Subject: [PATCH] resume to position if player was in background, keep screen on in player --- app/build.gradle | 3 ++- .../java/org/mosad/teapod/MainActivity.kt | 2 +- .../java/org/mosad/teapod/PlayerActivity.kt | 27 ++++++++++++++++--- app/src/main/res/layout/activity_player.xml | 1 + app/src/main/res/values/strings.xml | 6 +++++ 5 files changed, 33 insertions(+), 6 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index f71d9e4..11b8dd6 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -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 { diff --git a/app/src/main/java/org/mosad/teapod/MainActivity.kt b/app/src/main/java/org/mosad/teapod/MainActivity.kt index 25df3db..9ad41d5 100644 --- a/app/src/main/java/org/mosad/teapod/MainActivity.kt +++ b/app/src/main/java/org/mosad/teapod/MainActivity.kt @@ -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) } diff --git a/app/src/main/java/org/mosad/teapod/PlayerActivity.kt b/app/src/main/java/org/mosad/teapod/PlayerActivity.kt index bfca283..9d4a3b6 100644 --- a/app/src/main/java/org/mosad/teapod/PlayerActivity.kt +++ b/app/src/main/java/org/mosad/teapod/PlayerActivity.kt @@ -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) } } } diff --git a/app/src/main/res/layout/activity_player.xml b/app/src/main/res/layout/activity_player.xml index f214940..1d48ecd 100644 --- a/app/src/main/res/layout/activity_player.xml +++ b/app/src/main/res/layout/activity_player.xml @@ -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"> diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 2da7b4b..020d60a 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -18,4 +18,10 @@ org.mosad.teapod.encrypted_preferences org.mosad.teapod.user_login org.mosad.teapod.user_password + + + intent_stream_url + state_resume_window + state_resume_position + state_is_playing \ No newline at end of file