From 7b5b46f56071667a421a679a98812d755b63a4c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fernando=20Jim=C3=A9nez=20Moreno?= Date: Wed, 13 Nov 2019 16:50:02 +0100 Subject: [PATCH] Fix play action --- .../java/org/mozilla/servo/MainActivity.java | 4 +- .../java/org/mozilla/servo/MediaSession.java | 41 +++++++++++-------- 2 files changed, 27 insertions(+), 18 deletions(-) diff --git a/support/android/apk/servoapp/src/main/java/org/mozilla/servo/MainActivity.java b/support/android/apk/servoapp/src/main/java/org/mozilla/servo/MainActivity.java index 60abbc43747..366ec017a3d 100644 --- a/support/android/apk/servoapp/src/main/java/org/mozilla/servo/MainActivity.java +++ b/support/android/apk/servoapp/src/main/java/org/mozilla/servo/MainActivity.java @@ -232,12 +232,12 @@ public class MainActivity extends Activity implements Servo.Client { if (mMediaSession == null) { mMediaSession = new MediaSession(mServoView, this, getApplicationContext()); } - Log.d("SERVOMEDIA", "METADATA"); + Log.d("onMediaSessionMetadata", title + " " + artist + " " + album); } @Override public void onMediaSessionPlaybackStateChange(int state) { - Log.d("SERVOMEDIA", "PLAYBACK STATE CHANGED " + state); + Log.d("onMediaSessionPlaybackStateChange", String.valueOf(state)); if (mMediaSession == null) { mMediaSession = new MediaSession(mServoView, this, getApplicationContext()); } diff --git a/support/android/apk/servoapp/src/main/java/org/mozilla/servo/MediaSession.java b/support/android/apk/servoapp/src/main/java/org/mozilla/servo/MediaSession.java index 2b03206931a..eacf529f0eb 100644 --- a/support/android/apk/servoapp/src/main/java/org/mozilla/servo/MediaSession.java +++ b/support/android/apk/servoapp/src/main/java/org/mozilla/servo/MediaSession.java @@ -86,6 +86,7 @@ public class MediaSession { } public void showMediaSessionControls(int playbackState) { + Log.d("MediaSession", "showMediaSessionControls " + playbackState); IntentFilter filter = new IntentFilter(); if (playbackState == PLAYBACK_STATE_PAUSED) { filter.addAction(KEY_MEDIA_PLAY); @@ -95,21 +96,28 @@ public class MediaSession { } filter.addAction(KEY_MEDIA_STOP); - mMediaSessionActionReceiver = new BroadcastReceiver() { - @Override - public void onReceive(Context context, Intent intent) { - if (intent.getAction().equals(KEY_MEDIA_PAUSE)) { - mView.mediaSessionAction(ACTION_PAUSE); - Log.d("SERVOMEDIA", "PAUSE"); - } else if (intent.getAction().equals(KEY_MEDIA_PLAY)) { - mView.mediaSessionAction(ACTION_PLAY); - Log.d("SERVOMEDIA", "PLAY"); - } else if (intent.getAction().equals(KEY_MEDIA_STOP)) { - mView.mediaSessionAction(ACTION_STOP); - Log.d("SERVOMEDIA", "STOP"); + int id; + if (mMediaSessionActionReceiver == null) { + id = mNotificationID.getNext(); + + mMediaSessionActionReceiver = new BroadcastReceiver() { + @Override + public void onReceive(Context context, Intent intent) { + if (intent.getAction().equals(KEY_MEDIA_PAUSE)) { + mView.mediaSessionAction(ACTION_PAUSE); + Log.d("MediaSession", "PAUSE action"); + } else if (intent.getAction().equals(KEY_MEDIA_PLAY)) { + mView.mediaSessionAction(ACTION_PLAY); + Log.d("MediaSession", "PLAY action"); + } else if (intent.getAction().equals(KEY_MEDIA_STOP)) { + mView.mediaSessionAction(ACTION_STOP); + Log.d("MediaSession", "STOP action"); + } } - } - }; + }; + } else { + id = mNotificationID.get(); + } mContext.registerReceiver(mMediaSessionActionReceiver, filter); @@ -144,14 +152,15 @@ public class MediaSession { NotificationManager notificationManager = mContext.getSystemService(NotificationManager.class); - notificationManager.notify(mNotificationID.getNext(), builder.build()); + notificationManager.notify(id, builder.build()); } public void hideMediaSessionControls() { - Log.d("SERVOMEDIA", "hideMediaSessionControls"); + Log.d("MediaSession", "hideMediaSessionControls"); NotificationManager notificationManager = mContext.getSystemService(NotificationManager.class); notificationManager.cancel(mNotificationID.get()); mContext.unregisterReceiver(mMediaSessionActionReceiver); + mMediaSessionActionReceiver = null; } }