Merge pull request #4603 from ByteHamster/fix-service-running

Only accept media control buttons while actually playing
This commit is contained in:
ByteHamster 2020-10-26 14:04:59 +01:00 committed by GitHub
commit 7e9363a0f7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -623,7 +623,9 @@ public class PlaybackService extends MediaBrowserServiceCompat {
} }
return false; return false;
case KeyEvent.KEYCODE_MEDIA_NEXT: case KeyEvent.KEYCODE_MEDIA_NEXT:
if (notificationButton || UserPreferences.shouldHardwareButtonSkip()) { if (getStatus() != PlayerStatus.PLAYING && getStatus() != PlayerStatus.PAUSED) {
return false;
} else if (notificationButton || UserPreferences.shouldHardwareButtonSkip()) {
// assume the skip command comes from a notification or the lockscreen // assume the skip command comes from a notification or the lockscreen
// a >| skip button should actually skip // a >| skip button should actually skip
mediaPlayer.skip(); mediaPlayer.skip();
@ -634,10 +636,15 @@ public class PlaybackService extends MediaBrowserServiceCompat {
} }
return true; return true;
case KeyEvent.KEYCODE_MEDIA_FAST_FORWARD: case KeyEvent.KEYCODE_MEDIA_FAST_FORWARD:
mediaPlayer.seekDelta(UserPreferences.getFastForwardSecs() * 1000); if (getStatus() == PlayerStatus.PLAYING || getStatus() == PlayerStatus.PAUSED) {
return true; mediaPlayer.seekDelta(UserPreferences.getFastForwardSecs() * 1000);
return true;
}
return false;
case KeyEvent.KEYCODE_MEDIA_PREVIOUS: case KeyEvent.KEYCODE_MEDIA_PREVIOUS:
if (UserPreferences.shouldHardwarePreviousButtonRestart()) { if (getStatus() != PlayerStatus.PLAYING && getStatus() != PlayerStatus.PAUSED) {
return false;
} else if (UserPreferences.shouldHardwarePreviousButtonRestart()) {
// user wants to restart current episode // user wants to restart current episode
mediaPlayer.seekTo(0); mediaPlayer.seekTo(0);
} else { } else {
@ -646,7 +653,11 @@ public class PlaybackService extends MediaBrowserServiceCompat {
} }
return true; return true;
case KeyEvent.KEYCODE_MEDIA_REWIND: case KeyEvent.KEYCODE_MEDIA_REWIND:
mediaPlayer.seekDelta(-UserPreferences.getRewindSecs() * 1000); if (getStatus() == PlayerStatus.PLAYING || getStatus() == PlayerStatus.PAUSED) {
mediaPlayer.seekDelta(-UserPreferences.getRewindSecs() * 1000);
} else {
return false;
}
return true; return true;
case KeyEvent.KEYCODE_MEDIA_STOP: case KeyEvent.KEYCODE_MEDIA_STOP:
if (status == PlayerStatus.PLAYING) { if (status == PlayerStatus.PLAYING) {