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