diff --git a/app/src/main/java/org/schabi/newpipe/player/mediasession/MediaSessionPlayerUi.java b/app/src/main/java/org/schabi/newpipe/player/mediasession/MediaSessionPlayerUi.java index e9541ab06..3d19e0784 100644 --- a/app/src/main/java/org/schabi/newpipe/player/mediasession/MediaSessionPlayerUi.java +++ b/app/src/main/java/org/schabi/newpipe/player/mediasession/MediaSessionPlayerUi.java @@ -44,6 +44,15 @@ public class MediaSessionPlayerUi extends PlayerUi { sessionConnector = new MediaSessionConnector(mediaSession); sessionConnector.setQueueNavigator(new PlayQueueNavigator(mediaSession, player)); sessionConnector.setPlayer(getForwardingPlayer()); + sessionConnector.setMediaButtonEventHandler((p, i) -> { + // It seems like events from the Media Control UI + // in the notification area don't go through this function, + // so it's safe to just ignore all events in case we want to + // ignore the hardware media buttons. + // Returning true stops all further event processing of the system + return player.getPrefs().getBoolean( + context.getString(R.string.ignore_hardware_media_buttons_key), false); + }); sessionConnector.setMetadataDeduplicationEnabled(true); sessionConnector.setMediaMetadataProvider(exoPlayer -> buildMediaMetadata()); @@ -53,6 +62,7 @@ public class MediaSessionPlayerUi extends PlayerUi { public void destroyPlayer() { super.destroyPlayer(); if (sessionConnector != null) { + sessionConnector.setMediaButtonEventHandler(null); sessionConnector.setPlayer(null); sessionConnector.setQueueNavigator(null); sessionConnector = null; diff --git a/app/src/main/res/values/settings_keys.xml b/app/src/main/res/values/settings_keys.xml index 126818969..0b2e58d04 100644 --- a/app/src/main/res/values/settings_keys.xml +++ b/app/src/main/res/values/settings_keys.xml @@ -25,6 +25,7 @@ screen_brightness_key screen_brightness_timestamp_key clear_queue_confirmation_key + ignore_hardware_media_buttons_key popup_saved_width popup_saved_x diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index a8d527ffb..06f8cf4f1 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -83,6 +83,8 @@ Ask for confirmation before clearing a queue Switching from one player to another may replace your queue The active player queue will be replaced + Ignore hardware media button events + Useful, for instance, if you are using a headset with broken physical buttons Load thumbnails Turn off to prevent loading thumbnails, saving data and memory usage. Changes clear both in-memory and on-disk image cache Show comments diff --git a/app/src/main/res/xml/video_audio_settings.xml b/app/src/main/res/xml/video_audio_settings.xml index 8ff91548d..117ee8703 100644 --- a/app/src/main/res/xml/video_audio_settings.xml +++ b/app/src/main/res/xml/video_audio_settings.xml @@ -224,5 +224,12 @@ app:singleLineTitle="false" app:iconSpaceReserved="false" /> +