mirror of
https://github.com/libre-tube/LibreTube.git
synced 2024-12-15 06:40:30 +05:30
Fix issues with the audio player seekbar and add docs
This commit is contained in:
parent
3890bc3bcc
commit
e1667ab24f
@ -90,6 +90,7 @@ class AudioPlayerFragment : BaseFragment() {
|
|||||||
PlayingQueueSheet().show(childFragmentManager)
|
PlayingQueueSheet().show(childFragmentManager)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Listen for track changes due to autoplay or the notification
|
||||||
PlayingQueue.addOnTrackChangedListener(onTrackChangeListener)
|
PlayingQueue.addOnTrackChangedListener(onTrackChangeListener)
|
||||||
|
|
||||||
binding.playPause.setOnClickListener {
|
binding.playPause.setOnClickListener {
|
||||||
@ -97,9 +98,13 @@ class AudioPlayerFragment : BaseFragment() {
|
|||||||
if (isPaused) playerService.play() else playerService.pause()
|
if (isPaused) playerService.play() else playerService.pause()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// load the stream info into the UI
|
||||||
updateStreamInfo()
|
updateStreamInfo()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Load the information from a new stream into the UI
|
||||||
|
*/
|
||||||
private fun updateStreamInfo() {
|
private fun updateStreamInfo() {
|
||||||
val current = PlayingQueue.getCurrent()
|
val current = PlayingQueue.getCurrent()
|
||||||
current ?: return
|
current ?: return
|
||||||
@ -118,18 +123,24 @@ class AudioPlayerFragment : BaseFragment() {
|
|||||||
private fun initializeSeekBar() {
|
private fun initializeSeekBar() {
|
||||||
if (!this::playerService.isInitialized) return
|
if (!this::playerService.isInitialized) return
|
||||||
|
|
||||||
val duration = playerService.getDuration()?.toFloat() ?: return
|
|
||||||
binding.timeBar.valueTo = duration / 1000
|
|
||||||
binding.duration.text = DateUtils.formatElapsedTime((duration / 1000).toLong())
|
|
||||||
|
|
||||||
binding.timeBar.addOnChangeListener { _, value, fromUser ->
|
binding.timeBar.addOnChangeListener { _, value, fromUser ->
|
||||||
if (fromUser) playerService.seekToPosition(value.toLong() * 1000)
|
if (fromUser) playerService.seekToPosition(value.toLong() * 1000)
|
||||||
}
|
}
|
||||||
updateCurrentPosition()
|
updateSeekBar()
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun updateCurrentPosition() {
|
/**
|
||||||
|
* Update the position, duration and text views belonging to the seek bar
|
||||||
|
*/
|
||||||
|
private fun updateSeekBar() {
|
||||||
|
val duration = playerService.getDuration()?.toFloat() ?: return
|
||||||
val currentPosition = playerService.getCurrentPosition()?.toFloat() ?: 0f
|
val currentPosition = playerService.getCurrentPosition()?.toFloat() ?: 0f
|
||||||
|
|
||||||
|
// set the text for the indicators
|
||||||
|
binding.timeBar.valueTo = duration / 1000
|
||||||
|
binding.duration.text = DateUtils.formatElapsedTime((duration / 1000).toLong())
|
||||||
|
|
||||||
|
// update the time bar current value and maximum value
|
||||||
binding.timeBar.value = minOf(
|
binding.timeBar.value = minOf(
|
||||||
currentPosition / 1000,
|
currentPosition / 1000,
|
||||||
binding.timeBar.valueTo
|
binding.timeBar.valueTo
|
||||||
@ -137,7 +148,7 @@ class AudioPlayerFragment : BaseFragment() {
|
|||||||
binding.currentPosition.text = DateUtils.formatElapsedTime(
|
binding.currentPosition.text = DateUtils.formatElapsedTime(
|
||||||
(currentPosition / 1000).toLong()
|
(currentPosition / 1000).toLong()
|
||||||
)
|
)
|
||||||
handler.postDelayed(this::updateCurrentPosition, 200)
|
handler.postDelayed(this::updateSeekBar, 200)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun handleServiceConnection() {
|
private fun handleServiceConnection() {
|
||||||
@ -151,11 +162,11 @@ class AudioPlayerFragment : BaseFragment() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun onDestroy() {
|
override fun onDestroy() {
|
||||||
super.onDestroy()
|
// unregister all listeners and the connected [playerService]
|
||||||
|
|
||||||
playerService.onIsPlayingChanged = null
|
playerService.onIsPlayingChanged = null
|
||||||
activity?.unbindService(connection)
|
activity?.unbindService(connection)
|
||||||
// unregister the listener
|
|
||||||
PlayingQueue.removeOnTrackChangedListener(onTrackChangeListener)
|
PlayingQueue.removeOnTrackChangedListener(onTrackChangeListener)
|
||||||
|
|
||||||
|
super.onDestroy()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user