player interface part 2
* replace current time position with remaining time * show title and back button at the top
This commit is contained in:
parent
e51fb0b290
commit
27e8e1c3c2
|
@ -151,9 +151,10 @@ class MainActivity : AppCompatActivity(), BottomNavigationView.OnNavigationItemS
|
|||
}
|
||||
}
|
||||
|
||||
fun startPlayer(streamUrl: String) {
|
||||
fun startPlayer(streamUrl: String, title: String) {
|
||||
val intent = Intent(this, PlayerActivity::class.java).apply {
|
||||
putExtra(getString(R.string.intent_stream_url), streamUrl)
|
||||
putExtra(getString(R.string.intent_title), title)
|
||||
}
|
||||
startActivity(intent)
|
||||
}
|
||||
|
|
|
@ -25,6 +25,7 @@ class PlayerActivity : AppCompatActivity() {
|
|||
private lateinit var controller: StyledPlayerControlView
|
||||
|
||||
private var streamUrl = ""
|
||||
private var title = ""
|
||||
|
||||
private var playWhenReady = true
|
||||
private var currentWindow = 0
|
||||
|
@ -45,6 +46,7 @@ class PlayerActivity : AppCompatActivity() {
|
|||
playWhenReady = it.getBoolean(getString(R.string.state_is_playing))
|
||||
}
|
||||
streamUrl = intent.getStringExtra(getString(R.string.intent_stream_url)).toString()
|
||||
title = intent.getStringExtra(getString(R.string.intent_title)).toString()
|
||||
|
||||
initActions()
|
||||
}
|
||||
|
@ -107,7 +109,6 @@ class PlayerActivity : AppCompatActivity() {
|
|||
player.seekTo(playbackPosition)
|
||||
player.prepare()
|
||||
|
||||
|
||||
player.addListener(object : Player.EventListener {
|
||||
override fun onPlaybackStateChanged(state: Int) {
|
||||
super.onPlaybackStateChanged(state)
|
||||
|
@ -125,6 +126,7 @@ class PlayerActivity : AppCompatActivity() {
|
|||
}
|
||||
}
|
||||
})
|
||||
video_view.player = player
|
||||
|
||||
// when the player controls get hidden, hide the bars too
|
||||
video_view.setControllerVisibilityListener {
|
||||
|
@ -149,10 +151,14 @@ class PlayerActivity : AppCompatActivity() {
|
|||
}
|
||||
}
|
||||
|
||||
video_view.player = player
|
||||
exo_text_title.text = title // set media title
|
||||
}
|
||||
|
||||
private fun initActions() {
|
||||
exo_close_player.setOnClickListener {
|
||||
this.finish()
|
||||
}
|
||||
|
||||
exo_rew_10.setOnClickListener {
|
||||
player.seekTo(player.currentPosition - rwdTime)
|
||||
}
|
||||
|
@ -167,6 +173,8 @@ class PlayerActivity : AppCompatActivity() {
|
|||
currentWindow = player.currentWindowIndex
|
||||
playWhenReady = player.playWhenReady
|
||||
player.release()
|
||||
|
||||
Log.d(javaClass.name, "Released player")
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -164,7 +164,7 @@ class MediaFragment(private val media: Media, private val tmdb: TMDBResponse) :
|
|||
}
|
||||
|
||||
Log.d(javaClass.name, "Playing stream: $streamUrl")
|
||||
(activity as MainActivity).startPlayer(streamUrl)
|
||||
(activity as MainActivity).startPlayer(streamUrl, ep.title)
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,5 @@
|
|||
<vector android:height="24dp" android:tint="#FFFFFF"
|
||||
android:viewportHeight="24" android:viewportWidth="24"
|
||||
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path android:fillColor="@android:color/white" android:pathData="M20,11H7.83l5.59,-5.59L12,4l-8,8 8,8 1.41,-1.41L7.83,13H20v-2z"/>
|
||||
</vector>
|
|
@ -1,11 +1,38 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="#73000000">
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/exo_top_controls"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="12dp"
|
||||
android:layout_marginTop="7dp"
|
||||
android:layout_marginEnd="12dp"
|
||||
android:gravity="center"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<ImageButton
|
||||
android:id="@+id/exo_close_player"
|
||||
style="@style/ExoStyledControls.Button.Center"
|
||||
android:layout_width="34dp"
|
||||
android:layout_height="34dp"
|
||||
android:contentDescription="@string/close_player"
|
||||
app:srcCompat="@drawable/ic_baseline_arrow_back_24" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/exo_text_title"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginEnd="34dp"
|
||||
android:text="@string/text_title_ex"
|
||||
android:textAlignment="center"
|
||||
android:textColor="@color/exo_white" />
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/exo_main_controls"
|
||||
android:layout_width="match_parent"
|
||||
|
@ -24,7 +51,8 @@
|
|||
style="@style/ExoStyledControls.Button.Center.RewWithAmount"
|
||||
android:layout_width="42dp"
|
||||
android:layout_height="42dp"
|
||||
android:tint="@color/exo_white"/>
|
||||
android:contentDescription="@string/rewind_10"
|
||||
android:tint="@color/exo_white" />
|
||||
|
||||
|
||||
<Space
|
||||
|
@ -37,7 +65,8 @@
|
|||
style="@style/ExoStyledControls.Button.Center.PlayPause"
|
||||
android:layout_width="52dp"
|
||||
android:layout_height="52dp"
|
||||
android:layout_gravity="center" />
|
||||
android:layout_gravity="center"
|
||||
android:contentDescription="@string/play_pause" />
|
||||
|
||||
<Space
|
||||
android:layout_width="0dp"
|
||||
|
@ -48,7 +77,8 @@
|
|||
android:id="@+id/exo_ffwd_10"
|
||||
style="@style/ExoStyledControls.Button.Center.FfwdWithAmount"
|
||||
android:layout_width="42dp"
|
||||
android:layout_height="42dp" />
|
||||
android:layout_height="42dp"
|
||||
android:contentDescription="@string/forward_10" />
|
||||
|
||||
<Space
|
||||
android:layout_width="0dp"
|
||||
|
@ -57,26 +87,21 @@
|
|||
</LinearLayout>
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/exo_time_controls"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="bottom"
|
||||
android:layout_marginStart="7dp"
|
||||
android:layout_marginEnd="7dp"
|
||||
android:layout_marginStart="12dp"
|
||||
android:layout_marginEnd="12dp"
|
||||
android:layout_marginBottom="@dimen/exo_styled_progress_margin_bottom">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/exo_position"
|
||||
style="@style/ExoStyledControls.TimeText.Position"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<View
|
||||
android:id="@+id/exo_progress_placeholder"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="@dimen/exo_styled_progress_layout_height"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toStartOf="@+id/exo_remaining"
|
||||
app:layout_constraintStart_toEndOf="@+id/exo_position"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<TextView
|
||||
|
@ -87,5 +112,4 @@
|
|||
app:layout_constraintTop_toTopOf="parent" />
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
|
||||
</FrameLayout>
|
|
@ -30,6 +30,11 @@
|
|||
<string name="settings_secondary">Bevorzuge alternativen Stream</string>
|
||||
<string name="settings_secondary_desc">Untertitle-Stream verwenden, sofern vorhanden</string>
|
||||
|
||||
<!-- player -->
|
||||
<string name="close_player">Player schließen</string>
|
||||
<string name="rewind_10">10 Sekunden zurück</string>
|
||||
<string name="play_pause">Abspielen/Pause</string>
|
||||
<string name="forward_10">10 Sekunden vorwärts</string>
|
||||
<!-- dialogs -->
|
||||
<string name="save">speichern</string>
|
||||
<string name="cancel">@android:string/cancel</string>
|
||||
|
|
|
@ -39,6 +39,14 @@
|
|||
<string name="settings_secondary">Prefer secondary (sub) stream</string>
|
||||
<string name="settings_secondary_desc">Use the subtitles stream if present</string>
|
||||
|
||||
<!-- player -->
|
||||
<string name="close_player">close player</string>
|
||||
<string name="rewind_10">rewind 10 seconds</string>
|
||||
<string name="play_pause">play/pause</string>
|
||||
<string name="forward_10">forward 10 seconds</string>
|
||||
<string name="time_min_sec" translatable="false">%1$02d:%2$02d</string>
|
||||
<string name="time_hour_min_sec" translatable="false">%1$d:%2$02d:%3$02d</string>
|
||||
|
||||
<!-- dialogs -->
|
||||
<string name="save">save</string>
|
||||
<string name="cancel">@android:string/cancel</string>
|
||||
|
@ -48,8 +56,6 @@
|
|||
<string name="login_desc">You need to login before you can use Teapod. The Login-Data will be stored encrypted on your device.</string>
|
||||
<string name="login_failed_desc">Could not login. Please try again.</string>
|
||||
<string name="password">Password</string>
|
||||
<string name="time_min_sec" translatable="false">%1$02d:%2$02d</string>
|
||||
<string name="time_hour_min_sec" translatable="false">%1$d:%2$02d:%3$02d</string>
|
||||
|
||||
<!-- save keys -->
|
||||
<string name="encrypted_preference_file_key" translatable="false">org.mosad.teapod.encrypted_preferences</string>
|
||||
|
@ -60,6 +66,7 @@
|
|||
|
||||
<!-- intents & states -->
|
||||
<string name="intent_stream_url" translatable="false">intent_stream_url</string>
|
||||
<string name="intent_title" translatable="false">intent_title</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>
|
||||
|
|
Loading…
Reference in New Issue