diff options
author | kroegerama <chris@kroegerama.com> | 2017-12-21 13:41:51 +0100 |
---|---|---|
committer | kroegerama <chris@kroegerama.com> | 2017-12-21 13:41:51 +0100 |
commit | 2aa59062a2e1b354b829d9559605b84de005477d (patch) | |
tree | bfa87fd648420b728c9cf344fba9fdf6c69f03a3 /core/src/main/java/de/danoeh/antennapod | |
parent | f9686ffba71ae0c569acca351a2385b3d04207b4 (diff) | |
download | AntennaPod-2aa59062a2e1b354b829d9559605b84de005477d.zip |
Resolves #2475 (Headset button press not correctly handled)
Diffstat (limited to 'core/src/main/java/de/danoeh/antennapod')
-rw-r--r-- | core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackService.java | 23 |
1 files changed, 12 insertions, 11 deletions
diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackService.java b/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackService.java index 01c5f751e..a179565b6 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackService.java +++ b/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackService.java @@ -483,8 +483,9 @@ public class PlaybackService extends MediaBrowserServiceCompat { /** * Handles media button events + * return: keycode was handled */ - private void handleKeycode(int keycode, int source) { + private boolean handleKeycode(int keycode, int source) { Log.d(TAG, "Handling keycode: " + keycode); final PlaybackServiceMediaPlayer.PSMPInfo info = mediaPlayer.getPSMPInfo(); final PlayerStatus status = info.playerStatus; @@ -501,7 +502,7 @@ public class PlaybackService extends MediaBrowserServiceCompat { mediaPlayer.setStartWhenPrepared(true); mediaPlayer.prepare(); } - break; + return true; case KeyEvent.KEYCODE_MEDIA_PLAY: if (status == PlayerStatus.PAUSED || status == PlayerStatus.PREPARED) { mediaPlayer.resume(); @@ -509,13 +510,13 @@ public class PlaybackService extends MediaBrowserServiceCompat { mediaPlayer.setStartWhenPrepared(true); mediaPlayer.prepare(); } - break; + return true; case KeyEvent.KEYCODE_MEDIA_PAUSE: if (status == PlayerStatus.PLAYING) { mediaPlayer.pause(!UserPreferences.isPersistNotify(), true); } - break; + return true; case KeyEvent.KEYCODE_MEDIA_NEXT: if(source == InputDevice.SOURCE_CLASS_NONE || UserPreferences.shouldHardwareButtonSkip()) { @@ -527,10 +528,10 @@ public class PlaybackService extends MediaBrowserServiceCompat { // user actually wants to fast-forward seekDelta(UserPreferences.getFastForwardSecs() * 1000); } - break; + return true; case KeyEvent.KEYCODE_MEDIA_FAST_FORWARD: mediaPlayer.seekDelta(UserPreferences.getFastForwardSecs() * 1000); - break; + return true; case KeyEvent.KEYCODE_MEDIA_PREVIOUS: if(UserPreferences.shouldHardwarePreviousButtonRestart()) { // user wants to restart current episode @@ -539,10 +540,10 @@ public class PlaybackService extends MediaBrowserServiceCompat { // user wants to rewind current episode mediaPlayer.seekDelta(-UserPreferences.getRewindSecs() * 1000); } - break; + return true; case KeyEvent.KEYCODE_MEDIA_REWIND: mediaPlayer.seekDelta(-UserPreferences.getRewindSecs() * 1000); - break; + return true; case KeyEvent.KEYCODE_MEDIA_STOP: if (status == PlayerStatus.PLAYING) { mediaPlayer.pause(true, true); @@ -550,15 +551,15 @@ public class PlaybackService extends MediaBrowserServiceCompat { } stopForeground(true); // gets rid of persistent notification - break; + return true; default: Log.d(TAG, "Unhandled key code: " + keycode); if (info.playable != null && info.playerStatus == PlayerStatus.PLAYING) { // only notify the user about an unknown key event if it is actually doing something String message = String.format(getResources().getString(R.string.unknown_media_key), keycode); Toast.makeText(this, message, Toast.LENGTH_SHORT).show(); } - break; } + return false; } /** @@ -1774,7 +1775,7 @@ public class PlaybackService extends MediaBrowserServiceCompat { if (keyEvent != null && keyEvent.getAction() == KeyEvent.ACTION_DOWN && keyEvent.getRepeatCount() == 0){ - handleKeycode(keyEvent.getKeyCode(), keyEvent.getSource()); + return handleKeycode(keyEvent.getKeyCode(), keyEvent.getSource()); } } return false; |