From f3ceccfa829402541dc7603037877f2e08efbf9b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Cabessa?= Date: Mon, 14 Aug 2017 21:54:31 +0200 Subject: add a "rewind" and "fast forward" button for android Wear This feature is only enabled for "play" build. It is useful to skip advertisement during a podcast. Note: I originaly tried to implement this in the "4 ways controller" managed by the mediaSession (it contains vol up / vol down / skip). This object is linked to the capabilities of the session and seems to be hard to customise without changing the capabilities. This patch simply add 2 new buttons --- .../playback/PlaybackServiceFlavorHelper.java | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'core/src/play') diff --git a/core/src/play/java/de/danoeh/antennapod/core/service/playback/PlaybackServiceFlavorHelper.java b/core/src/play/java/de/danoeh/antennapod/core/service/playback/PlaybackServiceFlavorHelper.java index 0f493e63e..0cca2ffa4 100644 --- a/core/src/play/java/de/danoeh/antennapod/core/service/playback/PlaybackServiceFlavorHelper.java +++ b/core/src/play/java/de/danoeh/antennapod/core/service/playback/PlaybackServiceFlavorHelper.java @@ -6,9 +6,13 @@ import android.content.Intent; import android.content.IntentFilter; import android.net.NetworkInfo; import android.net.wifi.WifiManager; +import android.os.Bundle; import android.support.annotation.NonNull; import android.support.annotation.StringRes; +import android.support.v4.media.session.MediaSessionCompat; +import android.support.v4.media.session.PlaybackStateCompat; import android.support.v7.media.MediaRouter; +import android.support.wearable.media.MediaControlConstants; import android.util.Log; import android.widget.Toast; @@ -255,4 +259,21 @@ public class PlaybackServiceFlavorHelper { } return false; } + + void sessionStateAddActionForWear(PlaybackStateCompat.Builder sessionState, String actionName, CharSequence name, int icon) { + PlaybackStateCompat.CustomAction.Builder actionBuilder = + new PlaybackStateCompat.CustomAction.Builder(actionName, name, icon); + Bundle actionExtras = new Bundle(); + actionExtras.putBoolean(MediaControlConstants.EXTRA_CUSTOM_ACTION_SHOW_ON_WEAR, true); + actionBuilder.setExtras(actionExtras); + + sessionState.addCustomAction(actionBuilder.build()); + } + + void mediaSessionSetExtraForWear(MediaSessionCompat mediaSession) { + Bundle sessionExtras = new Bundle(); + sessionExtras.putBoolean(MediaControlConstants.EXTRA_RESERVE_SLOT_SKIP_TO_PREVIOUS, true); + sessionExtras.putBoolean(MediaControlConstants.EXTRA_RESERVE_SLOT_SKIP_TO_NEXT, true); + mediaSession.setExtras(sessionExtras); + } } -- cgit v1.2.3