diff options
author | Fernando Jiménez Moreno <ferjmoreno@gmail.com> | 2019-11-15 11:37:49 +0100 |
---|---|---|
committer | Fernando Jiménez Moreno <ferjmoreno@gmail.com> | 2019-11-20 13:34:30 +0100 |
commit | f65c4008287d6c71b6d3c94183139b16b170b5ca (patch) | |
tree | d743e53fccba8b68dd9ecbb3e89ffe36bf162ae5 | |
parent | d33c96b31e9370dd3254901a3164c78026daf4c9 (diff) | |
download | servo-f65c4008287d6c71b6d3c94183139b16b170b5ca.tar.gz servo-f65c4008287d6c71b6d3c94183139b16b170b5ca.zip |
Update media session metadata and show content text with artist and album
-rw-r--r-- | support/android/apk/servoapp/src/main/java/org/mozilla/servo/MainActivity.java | 6 | ||||
-rw-r--r-- | support/android/apk/servoapp/src/main/java/org/mozilla/servo/MediaSession.java | 51 |
2 files changed, 49 insertions, 8 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 366ec017a3d..21a6e7f996f 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 @@ -233,6 +233,7 @@ public class MainActivity extends Activity implements Servo.Client { mMediaSession = new MediaSession(mServoView, this, getApplicationContext()); } Log.d("onMediaSessionMetadata", title + " " + artist + " " + album); + mMediaSession.updateMetadata(title, artist, album); } @Override @@ -241,13 +242,16 @@ public class MainActivity extends Activity implements Servo.Client { if (mMediaSession == null) { mMediaSession = new MediaSession(mServoView, this, getApplicationContext()); } + + mMediaSession.setPlaybackState(state); + if (state == MediaSession.PLAYBACK_STATE_NONE) { mMediaSession.hideMediaSessionControls(); return; } if (state == MediaSession.PLAYBACK_STATE_PLAYING || state == MediaSession.PLAYBACK_STATE_PAUSED) { - mMediaSession.showMediaSessionControls(state); + mMediaSession.showMediaSessionControls(); return; } } 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 5a3316fc68f..6444dff4d99 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 @@ -58,9 +58,16 @@ public class MediaSession { ServoView mView; MainActivity mActivity; Context mContext; + NotificationID mNotificationID; BroadcastReceiver mMediaSessionActionReceiver; + int mPlaybackState = PLAYBACK_STATE_PAUSED; + + String mTitle; + String mArtist; + String mAlbum; + public MediaSession(ServoView view, MainActivity activity, Context context) { mView = view; mActivity = activity; @@ -85,13 +92,13 @@ public class MediaSession { } } - public void showMediaSessionControls(int playbackState) { - Log.d("MediaSession", "showMediaSessionControls " + playbackState); + public void showMediaSessionControls() { + Log.d("MediaSession", "showMediaSessionControls " + mPlaybackState); IntentFilter filter = new IntentFilter(); - if (playbackState == PLAYBACK_STATE_PAUSED) { + if (mPlaybackState == PLAYBACK_STATE_PAUSED) { filter.addAction(KEY_MEDIA_PLAY); } - if (playbackState == PLAYBACK_STATE_PLAYING) { + if (mPlaybackState == PLAYBACK_STATE_PLAYING) { filter.addAction(KEY_MEDIA_PAUSE); } filter.addAction(KEY_MEDIA_STOP); @@ -129,12 +136,28 @@ public class MediaSession { Notification.Builder builder = new Notification.Builder(mContext, this.MEDIA_CHANNEL_ID); builder .setSmallIcon(R.drawable.media_session_icon) - .setContentTitle("This is the notification title") + .setContentTitle(mTitle) .setVisibility(Notification.VISIBILITY_PUBLIC) .addAction(stopAction) .setStyle(new Notification.MediaStyle()); - if (playbackState == PLAYBACK_STATE_PAUSED) { + String contentText = new String(); + if (mArtist != null && !mArtist.isEmpty()) { + contentText = mArtist; + } + if (mAlbum != null && !mAlbum.isEmpty()) { + if (!contentText.isEmpty()) { + contentText += " - " + mAlbum; + } else { + contentText = mAlbum; + } + } + + if (!contentText.isEmpty()) { + builder.setContentText(contentText); + } + + if (mPlaybackState == PLAYBACK_STATE_PAUSED) { Intent playIntent = new Intent(KEY_MEDIA_PLAY); Notification.Action playAction = new Notification.Action(R.drawable.media_session_play, "Play", @@ -142,7 +165,7 @@ public class MediaSession { builder.addAction(playAction); } - if (playbackState == PLAYBACK_STATE_PLAYING) { + if (mPlaybackState == PLAYBACK_STATE_PLAYING) { Intent pauseIntent = new Intent(KEY_MEDIA_PAUSE); Notification.Action pauseAction = new Notification.Action(R.drawable.media_session_pause, "Pause", @@ -163,4 +186,18 @@ public class MediaSession { mContext.unregisterReceiver(mMediaSessionActionReceiver); mMediaSessionActionReceiver = null; } + + public void setPlaybackState(int state) { + mPlaybackState = state; + } + + public void updateMetadata(String title, String artist, String album) { + mTitle = title; + mArtist = artist; + mAlbum = album; + + if (mMediaSessionActionReceiver != null) { + showMediaSessionControls(); + } + } } |