Merge pull request #2117 from orionlee/2105_support_rewind_in_lockscreen
Issue #2105 : support optional rewind in lockscreen
This commit is contained in:
commit
44eb1a9cfd
|
@ -996,13 +996,37 @@ public class PlaybackService extends MediaBrowserServiceCompat {
|
|||
state = PlaybackStateCompat.STATE_NONE;
|
||||
}
|
||||
sessionState.setState(state, mediaPlayer.getPosition(), mediaPlayer.getPlaybackSpeed());
|
||||
sessionState.setActions(PlaybackStateCompat.ACTION_PLAY_PAUSE
|
||||
long capabilities = PlaybackStateCompat.ACTION_PLAY_PAUSE
|
||||
| PlaybackStateCompat.ACTION_REWIND
|
||||
| PlaybackStateCompat.ACTION_FAST_FORWARD
|
||||
| PlaybackStateCompat.ACTION_SKIP_TO_NEXT);
|
||||
| PlaybackStateCompat.ACTION_SKIP_TO_NEXT;
|
||||
|
||||
if (useSkipToPreviousForRewindInLockscreen()) {
|
||||
// Workaround to fool Android so that Lockscreen will expose a skip-to-previous button,
|
||||
// which will be used for rewind.
|
||||
// The workaround is used for pre Lollipop (Androidv5) devices.
|
||||
// For Androidv5+, lockscreen widges are really notifications (compact),
|
||||
// with an independent codepath
|
||||
//
|
||||
// @see #sessionCallback in the backing callback, skipToPrevious implementation
|
||||
// is actually the same as rewind. So no new inconsistency is created.
|
||||
// @see #setupNotification() for the method to create Androidv5+ lockscreen UI
|
||||
// with notification (compact)
|
||||
capabilities = capabilities | PlaybackStateCompat.ACTION_SKIP_TO_PREVIOUS;
|
||||
}
|
||||
|
||||
sessionState.setActions(capabilities);
|
||||
mediaSession.setPlaybackState(sessionState.build());
|
||||
}
|
||||
|
||||
private static boolean useSkipToPreviousForRewindInLockscreen() {
|
||||
// showRewindOnCompactNotification() corresponds to the "Set Lockscreen Buttons"
|
||||
// Settings in UI.
|
||||
// Hence, from user perspective, he/she is setting the buttons for Lockscreen
|
||||
return ( UserPreferences.showRewindOnCompactNotification() &&
|
||||
(Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) );
|
||||
}
|
||||
|
||||
/**
|
||||
* Used by updateMediaSessionMetadata to load notification data in another thread.
|
||||
*/
|
||||
|
|
Loading…
Reference in New Issue