Fix missing next override for headphone controls

This commit is contained in:
Kelvin 2023-10-11 22:50:36 +02:00
parent 10a661ad4c
commit 7afd75c712
2 changed files with 17 additions and 8 deletions

View file

@ -502,7 +502,7 @@ class VideoDetailView : ConstraintLayout {
MediaControlReceiver.onLowerVolumeReceived.subscribe(this) { handleLowerVolume() };
MediaControlReceiver.onPlayReceived.subscribe(this) { handlePlay() };
MediaControlReceiver.onPauseReceived.subscribe(this) { handlePause() };
MediaControlReceiver.onNextReceived.subscribe(this) { nextVideo() };
MediaControlReceiver.onNextReceived.subscribe(this) { nextVideo(true) };
MediaControlReceiver.onPreviousReceived.subscribe(this) { prevVideo() };
MediaControlReceiver.onCloseReceived.subscribe(this) {
Logger.i(TAG, "MediaControlReceiver.onCloseReceived")
@ -1363,9 +1363,11 @@ class VideoDetailView : ConstraintLayout {
}
}
fun nextVideo(): Boolean {
fun nextVideo(forceLoop: Boolean = false): Boolean {
Logger.i(TAG, "nextVideo")
val next = StatePlayer.instance.nextQueueItem(_player.duration < 100 || (_player.position.toFloat() / _player.duration) < 0.9);
var next = StatePlayer.instance.nextQueueItem(_player.duration < 100 || (_player.position.toFloat() / _player.duration) < 0.9);
if(next == null && forceLoop)
next = StatePlayer.instance.restartQueue();
if(next != null) {
setVideoOverview(next);
return true;

View file

@ -91,33 +91,39 @@ class MediaPlaybackService : Service() {
_mediaSession?.setCallback(object: MediaSessionCompat.Callback() {
override fun onSeekTo(pos: Long) {
super.onSeekTo(pos)
Log.i(TAG, "Media session callback onSeekTo(pos = $pos)");
Logger.i(TAG, "Media session callback onSeekTo(pos = $pos)");
MediaControlReceiver.onSeekToReceived.emit(pos);
}
override fun onPlay() {
super.onPlay();
Log.i(TAG, "Media session callback onPlay()");
Logger.i(TAG, "Media session callback onPlay()");
MediaControlReceiver.onPlayReceived.emit();
}
override fun onPause() {
super.onPause();
Log.i(TAG, "Media session callback onPause()");
Logger.i(TAG, "Media session callback onPause()");
MediaControlReceiver.onPauseReceived.emit();
}
override fun onStop() {
super.onStop();
Log.i(TAG, "Media session callback onStop()");
Logger.i(TAG, "Media session callback onStop()");
MediaControlReceiver.onCloseReceived.emit();
}
override fun onSkipToPrevious() {
super.onSkipToPrevious();
Log.i(TAG, "Media session callback onSkipToPrevious()");
Logger.i(TAG, "Media session callback onSkipToPrevious()");
MediaControlReceiver.onPreviousReceived.emit();
}
override fun onSkipToNext() {
super.onSkipToNext()
Logger.i(TAG, "Media session callback onSkipToNext()");
MediaControlReceiver.onNextReceived.emit();
}
});
}
@ -285,6 +291,7 @@ class MediaPlaybackService : Service() {
PlaybackStateCompat.ACTION_PLAY or
PlaybackStateCompat.ACTION_PAUSE or
PlaybackStateCompat.ACTION_SKIP_TO_PREVIOUS or
PlaybackStateCompat.ACTION_SKIP_TO_NEXT or
PlaybackStateCompat.ACTION_PLAY_PAUSE
)
.setState(state, pos, 1f, SystemClock.elapsedRealtime())