add remaining time to player

This commit is contained in:
Jannik 2020-11-07 13:33:59 +01:00
parent d3f078c661
commit e51fb0b290
Signed by: Seil0
GPG Key ID: E8459F3723C52C24
4 changed files with 29 additions and 12 deletions

View File

@ -8,10 +8,7 @@ import android.view.View
import android.view.WindowInsets
import android.view.WindowInsetsController
import androidx.appcompat.app.AppCompatActivity
import com.google.android.exoplayer2.ExoPlayer
import com.google.android.exoplayer2.MediaItem
import com.google.android.exoplayer2.Player
import com.google.android.exoplayer2.SimpleExoPlayer
import com.google.android.exoplayer2.*
import com.google.android.exoplayer2.source.hls.HlsMediaSource
import com.google.android.exoplayer2.ui.StyledPlayerControlView
import com.google.android.exoplayer2.upstream.DataSource
@ -19,6 +16,7 @@ import com.google.android.exoplayer2.upstream.DefaultDataSourceFactory
import com.google.android.exoplayer2.util.Util
import kotlinx.android.synthetic.main.activity_player.*
import kotlinx.android.synthetic.main.player_controls.*
import java.util.concurrent.TimeUnit
class PlayerActivity : AppCompatActivity() {
@ -31,6 +29,7 @@ class PlayerActivity : AppCompatActivity() {
private var playWhenReady = true
private var currentWindow = 0
private var playbackPosition: Long = 0
private var remainingTime: Long = 0
private val rwdTime = 10000
private val fwdTime = 10000
@ -98,7 +97,7 @@ class PlayerActivity : AppCompatActivity() {
player = SimpleExoPlayer.Builder(this).build()
dataSourceFactory = DefaultDataSourceFactory(this, Util.getUserAgent(this, "Teapod"))
controller = video_view.findViewById<StyledPlayerControlView>(R.id.exo_controller)
controller = video_view.findViewById(R.id.exo_controller)
val mediaSource = HlsMediaSource.Factory(dataSourceFactory)
.createMediaSource(MediaItem.fromUri(Uri.parse(streamUrl)))
@ -127,12 +126,27 @@ class PlayerActivity : AppCompatActivity() {
}
})
// disable controls animation (time-bar) TODO enable and hide time to end with animation
controller.isAnimationEnabled = false
// when the player controls get hidden, hide the bars too
video_view.setControllerVisibilityListener {
if (it == View.GONE) hideBars()
if (it == View.GONE) {
hideBars()
}
}
controller.isAnimationEnabled = false // disable controls (time-bar) animation
controller.setProgressUpdateListener { _, _ ->
remainingTime = player.duration - player.currentPosition
val hours = TimeUnit.MILLISECONDS.toHours(remainingTime) % 24
val minutes = TimeUnit.MILLISECONDS.toMinutes(remainingTime) % 60
val seconds = TimeUnit.MILLISECONDS.toSeconds(remainingTime) % 60
// if remaining time is below 60 minutes, don't show hours
exo_remaining.text = if (TimeUnit.MILLISECONDS.toMinutes(remainingTime) < 60) {
getString(R.string.time_min_sec, minutes, seconds)
} else {
getString(R.string.time_hour_min_sec, hours, minutes, seconds)
}
}
video_view.player = player

View File

@ -13,6 +13,7 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"
android:animateLayoutChanges="true"
app:fastforward_increment="10000"
app:rewind_increment="10000"
app:controller_layout_id="@layout/player_controls"/>

View File

@ -75,13 +75,13 @@
android:layout_width="0dp"
android:layout_height="@dimen/exo_styled_progress_layout_height"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/exo_duration"
app:layout_constraintEnd_toStartOf="@+id/exo_remaining"
app:layout_constraintStart_toEndOf="@+id/exo_position"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/exo_duration"
style="@style/ExoStyledControls.TimeText.Duration"
android:id="@+id/exo_remaining"
style="@style/ExoStyledControls.TimeText.Position"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />

View File

@ -48,6 +48,8 @@
<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>