Skip to content

Commit 42d8616

Browse files
NyanCatTW1Stypox
authored andcommitted
Implement Ignore hardware media button events option
1 parent 2ee4c6e commit 42d8616

4 files changed

Lines changed: 20 additions & 0 deletions

File tree

app/src/main/java/org/schabi/newpipe/player/mediasession/MediaSessionPlayerUi.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,15 @@ public void initPlayer() {
4444
sessionConnector = new MediaSessionConnector(mediaSession);
4545
sessionConnector.setQueueNavigator(new PlayQueueNavigator(mediaSession, player));
4646
sessionConnector.setPlayer(getForwardingPlayer());
47+
sessionConnector.setMediaButtonEventHandler((p, i) -> {
48+
// It seems like events from the Media Control UI
49+
// in the notification area don't go through this function,
50+
// so it's safe to just ignore all events in case we want to
51+
// ignore the hardware media buttons.
52+
// Returning true stops all further event processing of the system
53+
return player.getPrefs().getBoolean(
54+
context.getString(R.string.ignore_hardware_media_buttons_key), false);
55+
});
4756

4857
sessionConnector.setMetadataDeduplicationEnabled(true);
4958
sessionConnector.setMediaMetadataProvider(exoPlayer -> buildMediaMetadata());
@@ -53,6 +62,7 @@ public void initPlayer() {
5362
public void destroyPlayer() {
5463
super.destroyPlayer();
5564
if (sessionConnector != null) {
65+
sessionConnector.setMediaButtonEventHandler(null);
5666
sessionConnector.setPlayer(null);
5767
sessionConnector.setQueueNavigator(null);
5868
sessionConnector = null;

app/src/main/res/values/settings_keys.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
<string name="screen_brightness_key">screen_brightness_key</string>
2626
<string name="screen_brightness_timestamp_key">screen_brightness_timestamp_key</string>
2727
<string name="clear_queue_confirmation_key">clear_queue_confirmation_key</string>
28+
<string name="ignore_hardware_media_buttons_key">ignore_hardware_media_buttons_key</string>
2829

2930
<string name="popup_saved_width_key">popup_saved_width</string>
3031
<string name="popup_saved_x_key">popup_saved_x</string>

app/src/main/res/values/strings.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,8 @@
8383
<string name="clear_queue_confirmation_title">Ask for confirmation before clearing a queue</string>
8484
<string name="clear_queue_confirmation_summary">Switching from one player to another may replace your queue</string>
8585
<string name="clear_queue_confirmation_description">The active player queue will be replaced</string>
86+
<string name="ignore_hardware_media_buttons_title">Ignore hardware media button events</string>
87+
<string name="ignore_hardware_media_buttons_summary">Useful, for instance, if you are using a headset with broken physical buttons</string>
8688
<string name="download_thumbnail_title">Load thumbnails</string>
8789
<string name="download_thumbnail_summary">Turn off to prevent loading thumbnails, saving data and memory usage. Changes clear both in-memory and on-disk image cache</string>
8890
<string name="show_comments_title">Show comments</string>

app/src/main/res/xml/video_audio_settings.xml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -224,5 +224,12 @@
224224
app:singleLineTitle="false"
225225
app:iconSpaceReserved="false" />
226226

227+
<SwitchPreferenceCompat
228+
android:defaultValue="false"
229+
android:key="@string/ignore_hardware_media_buttons_key"
230+
android:summary="@string/ignore_hardware_media_buttons_summary"
231+
android:title="@string/ignore_hardware_media_buttons_title"
232+
app:singleLineTitle="false"
233+
app:iconSpaceReserved="false" />
227234
</PreferenceCategory>
228235
</PreferenceScreen>

0 commit comments

Comments
 (0)