aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFernando Jiménez Moreno <ferjmoreno@gmail.com>2019-11-15 11:37:49 +0100
committerFernando Jiménez Moreno <ferjmoreno@gmail.com>2019-11-20 13:34:30 +0100
commitf65c4008287d6c71b6d3c94183139b16b170b5ca (patch)
treed743e53fccba8b68dd9ecbb3e89ffe36bf162ae5
parentd33c96b31e9370dd3254901a3164c78026daf4c9 (diff)
downloadservo-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.java6
-rw-r--r--support/android/apk/servoapp/src/main/java/org/mozilla/servo/MediaSession.java51
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();
+ }
+ }
}