Merge pull request #276 from lbryio/bg-media-notification-intent
group the background service and background media player notifications
This commit is contained in:
commit
77e471d671
5 changed files with 32 additions and 13 deletions
|
@ -297,8 +297,8 @@ class AppWithNavigationState extends React.Component {
|
||||||
|
|
||||||
// Background media
|
// Background media
|
||||||
if (backgroundPlayEnabled && NativeModules.BackgroundMedia && window.currentMediaInfo) {
|
if (backgroundPlayEnabled && NativeModules.BackgroundMedia && window.currentMediaInfo) {
|
||||||
const { title, channel } = window.currentMediaInfo;
|
const { title, channel, uri } = window.currentMediaInfo;
|
||||||
NativeModules.BackgroundMedia.showPlaybackNotification(title, channel, null, false);
|
NativeModules.BackgroundMedia.showPlaybackNotification(title, channel, uri, false);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -253,8 +253,8 @@ class MediaPlayer extends React.PureComponent {
|
||||||
const { backgroundPlayEnabled } = this.props;
|
const { backgroundPlayEnabled } = this.props;
|
||||||
if (backgroundPlayEnabled) {
|
if (backgroundPlayEnabled) {
|
||||||
if (NativeModules.BackgroundMedia && window.currentMediaInfo) {
|
if (NativeModules.BackgroundMedia && window.currentMediaInfo) {
|
||||||
const { title, channel } = window.currentMediaInfo;
|
const { title, channel, uri } = window.currentMediaInfo;
|
||||||
NativeModules.BackgroundMedia.showPlaybackNotification(title, channel, null, this.state.paused);
|
NativeModules.BackgroundMedia.showPlaybackNotification(title, channel, uri, this.state.paused);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -241,12 +241,9 @@ class FilePage extends React.PureComponent {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
onMediaLoaded = (title, channelName) => {
|
onMediaLoaded = (channelName, title, uri) => {
|
||||||
this.setState({ mediaLoaded: true });
|
this.setState({ mediaLoaded: true });
|
||||||
window.currentMediaInfo = {
|
window.currentMediaInfo = { channel: channelName, title, uri };
|
||||||
title: title,
|
|
||||||
channel: channelName
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
onPlaybackStarted = () => {
|
onPlaybackStarted = () => {
|
||||||
|
@ -410,7 +407,7 @@ class FilePage extends React.PureComponent {
|
||||||
this.setState({ playerHeight: evt.nativeEvent.layout.height });
|
this.setState({ playerHeight: evt.nativeEvent.layout.height });
|
||||||
}
|
}
|
||||||
}}
|
}}
|
||||||
onMediaLoaded={() => this.onMediaLoaded(title, channelName)}
|
onMediaLoaded={() => this.onMediaLoaded(channelName, title, uri)}
|
||||||
onPlaybackStarted={this.onPlaybackStarted}
|
onPlaybackStarted={this.onPlaybackStarted}
|
||||||
/>}
|
/>}
|
||||||
|
|
||||||
|
|
|
@ -39,8 +39,12 @@ public class LbrynetService extends PythonService {
|
||||||
|
|
||||||
private static final String NOTIFICATION_CHANNEL_ID = "io.lbry.browser.DAEMON_NOTIFICATION_CHANNEL";
|
private static final String NOTIFICATION_CHANNEL_ID = "io.lbry.browser.DAEMON_NOTIFICATION_CHANNEL";
|
||||||
|
|
||||||
|
private static final int SERVICE_NOTIFICATION_GROUP_ID = -1;
|
||||||
|
|
||||||
public static final String ACTION_STOP_SERVICE = "io.lbry.browser.ACTION_STOP_SERVICE";
|
public static final String ACTION_STOP_SERVICE = "io.lbry.browser.ACTION_STOP_SERVICE";
|
||||||
|
|
||||||
|
public static final String GROUP_SERVICE = "io.lbry.browser.GROUP_SERVICE";
|
||||||
|
|
||||||
public static String TAG = "LbrynetService";
|
public static String TAG = "LbrynetService";
|
||||||
|
|
||||||
public static LbrynetService serviceInstance;
|
public static LbrynetService serviceInstance;
|
||||||
|
@ -86,16 +90,27 @@ public class LbrynetService extends PythonService {
|
||||||
}
|
}
|
||||||
|
|
||||||
Intent contextIntent = new Intent(context, MainActivity.class);
|
Intent contextIntent = new Intent(context, MainActivity.class);
|
||||||
PendingIntent pIntent = PendingIntent.getActivity(context, 0, contextIntent, PendingIntent.FLAG_UPDATE_CURRENT);
|
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, contextIntent, PendingIntent.FLAG_UPDATE_CURRENT);
|
||||||
|
|
||||||
Intent stopIntent = new Intent(ACTION_STOP_SERVICE);
|
Intent stopIntent = new Intent(ACTION_STOP_SERVICE);
|
||||||
PendingIntent stopPendingIntent = PendingIntent.getBroadcast(context, 0, stopIntent, 0);
|
PendingIntent stopPendingIntent = PendingIntent.getBroadcast(context, 0, stopIntent, 0);
|
||||||
|
|
||||||
|
// Create the notification group
|
||||||
|
NotificationCompat.Builder groupBuilder = new NotificationCompat.Builder(context, NOTIFICATION_CHANNEL_ID);
|
||||||
|
groupBuilder.setContentTitle("LBRY Browser")
|
||||||
|
.setColor(ContextCompat.getColor(context, R.color.lbrygreen))
|
||||||
|
.setSmallIcon(R.drawable.ic_lbry)
|
||||||
|
.setPriority(NotificationCompat.PRIORITY_LOW)
|
||||||
|
.setGroup(GROUP_SERVICE)
|
||||||
|
.setGroupSummary(true);
|
||||||
|
notificationManager.notify(SERVICE_NOTIFICATION_GROUP_ID, groupBuilder.build());
|
||||||
|
|
||||||
NotificationCompat.Builder builder = new NotificationCompat.Builder(context, NOTIFICATION_CHANNEL_ID);
|
NotificationCompat.Builder builder = new NotificationCompat.Builder(context, NOTIFICATION_CHANNEL_ID);
|
||||||
Notification notification = builder.setColor(ContextCompat.getColor(context, R.color.lbrygreen))
|
Notification notification = builder.setColor(ContextCompat.getColor(context, R.color.lbrygreen))
|
||||||
|
.setContentIntent(pendingIntent)
|
||||||
.setContentTitle(serviceTitle)
|
.setContentTitle(serviceTitle)
|
||||||
.setContentText(serviceDescription)
|
.setContentText(serviceDescription)
|
||||||
.setContentIntent(pIntent)
|
.setGroup(GROUP_SERVICE)
|
||||||
.setWhen(System.currentTimeMillis())
|
.setWhen(System.currentTimeMillis())
|
||||||
.setSmallIcon(R.drawable.ic_lbry)
|
.setSmallIcon(R.drawable.ic_lbry)
|
||||||
.setOngoing(true)
|
.setOngoing(true)
|
||||||
|
|
|
@ -8,6 +8,7 @@ import android.app.PendingIntent;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.content.SharedPreferences;
|
import android.content.SharedPreferences;
|
||||||
|
import android.net.Uri;
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
import android.support.v4.app.NotificationCompat;
|
import android.support.v4.app.NotificationCompat;
|
||||||
import android.support.v4.app.NotificationManagerCompat;
|
import android.support.v4.app.NotificationManagerCompat;
|
||||||
|
@ -17,12 +18,13 @@ import com.facebook.react.bridge.ReactApplicationContext;
|
||||||
import com.facebook.react.bridge.ReactContextBaseJavaModule;
|
import com.facebook.react.bridge.ReactContextBaseJavaModule;
|
||||||
import com.facebook.react.bridge.ReactMethod;
|
import com.facebook.react.bridge.ReactMethod;
|
||||||
|
|
||||||
|
import io.lbry.browser.LbrynetService;
|
||||||
import io.lbry.browser.MainActivity;
|
import io.lbry.browser.MainActivity;
|
||||||
import io.lbry.browser.R;
|
import io.lbry.browser.R;
|
||||||
|
|
||||||
public class BackgroundMediaModule extends ReactContextBaseJavaModule {
|
public class BackgroundMediaModule extends ReactContextBaseJavaModule {
|
||||||
|
|
||||||
private static final int NOTIFICATION_ID = 900;
|
private static final int NOTIFICATION_ID = -2;
|
||||||
|
|
||||||
private static final String NOTIFICATION_CHANNEL_ID = "io.lbry.browser.MEDIA_PLAYER_NOTIFICATION_CHANNEL";
|
private static final String NOTIFICATION_CHANNEL_ID = "io.lbry.browser.MEDIA_PLAYER_NOTIFICATION_CHANNEL";
|
||||||
|
|
||||||
|
@ -58,6 +60,9 @@ public class BackgroundMediaModule extends ReactContextBaseJavaModule {
|
||||||
channelCreated = true;
|
channelCreated = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Intent contextIntent = new Intent(context, MainActivity.class);
|
||||||
|
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, contextIntent, PendingIntent.FLAG_UPDATE_CURRENT);
|
||||||
|
|
||||||
Intent playIntent = new Intent();
|
Intent playIntent = new Intent();
|
||||||
playIntent.setAction(ACTION_PLAY);
|
playIntent.setAction(ACTION_PLAY);
|
||||||
PendingIntent playPendingIntent = PendingIntent.getBroadcast(context, 0, playIntent, 0);
|
PendingIntent playPendingIntent = PendingIntent.getBroadcast(context, 0, playIntent, 0);
|
||||||
|
@ -69,8 +74,10 @@ public class BackgroundMediaModule extends ReactContextBaseJavaModule {
|
||||||
NotificationManagerCompat notificationManager = NotificationManagerCompat.from(context);
|
NotificationManagerCompat notificationManager = NotificationManagerCompat.from(context);
|
||||||
NotificationCompat.Builder builder = new NotificationCompat.Builder(context, NOTIFICATION_CHANNEL_ID);
|
NotificationCompat.Builder builder = new NotificationCompat.Builder(context, NOTIFICATION_CHANNEL_ID);
|
||||||
builder.setColor(ContextCompat.getColor(context, R.color.lbrygreen))
|
builder.setColor(ContextCompat.getColor(context, R.color.lbrygreen))
|
||||||
|
.setContentIntent(pendingIntent)
|
||||||
.setContentTitle(title)
|
.setContentTitle(title)
|
||||||
.setContentText(publisher)
|
.setContentText(publisher)
|
||||||
|
.setGroup(LbrynetService.GROUP_SERVICE)
|
||||||
.setOngoing(!paused)
|
.setOngoing(!paused)
|
||||||
.setSmallIcon(paused ? android.R.drawable.ic_media_pause : android.R.drawable.ic_media_play)
|
.setSmallIcon(paused ? android.R.drawable.ic_media_pause : android.R.drawable.ic_media_play)
|
||||||
.setStyle(new android.support.v4.media.app.NotificationCompat.MediaStyle()
|
.setStyle(new android.support.v4.media.app.NotificationCompat.MediaStyle()
|
||||||
|
|
Loading…
Reference in a new issue