Commit c2a88a5e by Sebastián Katzer

Support for Androids media style

parent c967ea57
...@@ -25,10 +25,13 @@ import android.app.PendingIntent; ...@@ -25,10 +25,13 @@ import android.app.PendingIntent;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.graphics.Bitmap; import android.graphics.Bitmap;
import android.media.session.PlaybackState;
import android.net.Uri; import android.net.Uri;
import android.os.Bundle; import android.os.Bundle;
import android.support.v4.app.NotificationCompat; import android.support.v4.app.NotificationCompat;
import android.support.v4.app.NotificationCompat.MessagingStyle.Message; import android.support.v4.app.NotificationCompat.MessagingStyle.Message;
import android.support.v4.media.app.NotificationCompat.MediaStyle;
import android.support.v4.media.session.MediaSessionCompat;
import java.util.List; import java.util.List;
import java.util.Random; import java.util.Random;
...@@ -178,6 +181,13 @@ public final class Builder { ...@@ -178,6 +181,13 @@ public final class Builder {
return; return;
} }
MediaSessionCompat.Token token = options.getMediaSessionToken();
if (token != null) {
applyMediaStyle(builder, token);
return;
}
List<Bitmap> pics = options.getAttachments(); List<Bitmap> pics = options.getAttachments();
if (pics.size() > 0) { if (pics.size() > 0) {
...@@ -274,6 +284,23 @@ public final class Builder { ...@@ -274,6 +284,23 @@ public final class Builder {
} }
/** /**
* Apply media style.
*
* @param builder Local notification builder instance.
* @param token The media session token.
*/
private void applyMediaStyle(NotificationCompat.Builder builder,
MediaSessionCompat.Token token) {
MediaStyle style;
style = new MediaStyle(builder)
.setMediaSession(token)
.setShowActionsInCompactView(1);
builder.setStyle(style);
}
/**
* Set intent to handle the delete event. Will clean up some persisted * Set intent to handle the delete event. Will clean up some persisted
* preferences. * preferences.
* *
...@@ -304,7 +331,7 @@ public final class Builder { ...@@ -304,7 +331,7 @@ public final class Builder {
* @param builder Local notification builder instance. * @param builder Local notification builder instance.
*/ */
private void applyContentReceiver(NotificationCompat.Builder builder) { private void applyContentReceiver(NotificationCompat.Builder builder) {
new MediaSessionCompat(context, "").getSessionToken();
if (clickActivity == null) if (clickActivity == null)
return; return;
......
...@@ -27,6 +27,7 @@ import android.graphics.Color; ...@@ -27,6 +27,7 @@ import android.graphics.Color;
import android.net.Uri; import android.net.Uri;
import android.support.v4.app.NotificationCompat; import android.support.v4.app.NotificationCompat;
import android.support.v4.app.NotificationCompat.MessagingStyle.Message; import android.support.v4.app.NotificationCompat.MessagingStyle.Message;
import android.support.v4.media.session.MediaSessionCompat;
import org.json.JSONArray; import org.json.JSONArray;
import org.json.JSONObject; import org.json.JSONObject;
...@@ -617,6 +618,22 @@ public final class Options { ...@@ -617,6 +618,22 @@ public final class Options {
} }
/** /**
* Gets the token for the specified media session.
*
* @return null if there no session.
*/
MediaSessionCompat.Token getMediaSessionToken() {
String tag = options.optString("mediaSession", null);
if (tag == null)
return null;
MediaSessionCompat session = new MediaSessionCompat(context, tag);
return session.getSessionToken();
}
/**
* Strips the hex code #FF00FF => FF00FF * Strips the hex code #FF00FF => FF00FF
* *
* @param hex The hex code to strip. * @param hex The hex code to strip.
......
...@@ -69,6 +69,7 @@ exports.applyPlatformSpecificOptions = function () { ...@@ -69,6 +69,7 @@ exports.applyPlatformSpecificOptions = function () {
defaults.number = 0; defaults.number = 0;
defaults.channel = undefined; defaults.channel = undefined;
defaults.launch = true; defaults.launch = true;
defaults.mediaSession = undefined;
break; break;
} }
}; };
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment