Commit c2a88a5e by Sebastián Katzer

Support for Androids media style

parent c967ea57
......@@ -25,10 +25,13 @@ import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.media.session.PlaybackState;
import android.net.Uri;
import android.os.Bundle;
import android.support.v4.app.NotificationCompat;
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.Random;
......@@ -178,6 +181,13 @@ public final class Builder {
return;
}
MediaSessionCompat.Token token = options.getMediaSessionToken();
if (token != null) {
applyMediaStyle(builder, token);
return;
}
List<Bitmap> pics = options.getAttachments();
if (pics.size() > 0) {
......@@ -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
* preferences.
*
......@@ -304,7 +331,7 @@ public final class Builder {
* @param builder Local notification builder instance.
*/
private void applyContentReceiver(NotificationCompat.Builder builder) {
new MediaSessionCompat(context, "").getSessionToken();
if (clickActivity == null)
return;
......
......@@ -27,6 +27,7 @@ import android.graphics.Color;
import android.net.Uri;
import android.support.v4.app.NotificationCompat;
import android.support.v4.app.NotificationCompat.MessagingStyle.Message;
import android.support.v4.media.session.MediaSessionCompat;
import org.json.JSONArray;
import org.json.JSONObject;
......@@ -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
*
* @param hex The hex code to strip.
......
......@@ -69,6 +69,7 @@ exports.applyPlatformSpecificOptions = function () {
defaults.number = 0;
defaults.channel = undefined;
defaults.launch = true;
defaults.mediaSession = undefined;
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