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
|
||||
if (backgroundPlayEnabled && NativeModules.BackgroundMedia && window.currentMediaInfo) {
|
||||
const { title, channel } = window.currentMediaInfo;
|
||||
NativeModules.BackgroundMedia.showPlaybackNotification(title, channel, null, false);
|
||||
const { title, channel, uri } = window.currentMediaInfo;
|
||||
NativeModules.BackgroundMedia.showPlaybackNotification(title, channel, uri, false);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
|
|
@ -253,8 +253,8 @@ class MediaPlayer extends React.PureComponent {
|
|||
const { backgroundPlayEnabled } = this.props;
|
||||
if (backgroundPlayEnabled) {
|
||||
if (NativeModules.BackgroundMedia && window.currentMediaInfo) {
|
||||
const { title, channel } = window.currentMediaInfo;
|
||||
NativeModules.BackgroundMedia.showPlaybackNotification(title, channel, null, this.state.paused);
|
||||
const { title, channel, uri } = window.currentMediaInfo;
|
||||
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 });
|
||||
window.currentMediaInfo = {
|
||||
title: title,
|
||||
channel: channelName
|
||||
};
|
||||
window.currentMediaInfo = { channel: channelName, title, uri };
|
||||
}
|
||||
|
||||
onPlaybackStarted = () => {
|
||||
|
@ -410,7 +407,7 @@ class FilePage extends React.PureComponent {
|
|||
this.setState({ playerHeight: evt.nativeEvent.layout.height });
|
||||
}
|
||||
}}
|
||||
onMediaLoaded={() => this.onMediaLoaded(title, channelName)}
|
||||
onMediaLoaded={() => this.onMediaLoaded(channelName, title, uri)}
|
||||
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 int SERVICE_NOTIFICATION_GROUP_ID = -1;
|
||||
|
||||
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 LbrynetService serviceInstance;
|
||||
|
@ -86,16 +90,27 @@ public class LbrynetService extends PythonService {
|
|||
}
|
||||
|
||||
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);
|
||||
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);
|
||||
Notification notification = builder.setColor(ContextCompat.getColor(context, R.color.lbrygreen))
|
||||
.setContentIntent(pendingIntent)
|
||||
.setContentTitle(serviceTitle)
|
||||
.setContentText(serviceDescription)
|
||||
.setContentIntent(pIntent)
|
||||
.setGroup(GROUP_SERVICE)
|
||||
.setWhen(System.currentTimeMillis())
|
||||
.setSmallIcon(R.drawable.ic_lbry)
|
||||
.setOngoing(true)
|
||||
|
|
|
@ -8,6 +8,7 @@ import android.app.PendingIntent;
|
|||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.SharedPreferences;
|
||||
import android.net.Uri;
|
||||
import android.os.Build;
|
||||
import android.support.v4.app.NotificationCompat;
|
||||
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.ReactMethod;
|
||||
|
||||
import io.lbry.browser.LbrynetService;
|
||||
import io.lbry.browser.MainActivity;
|
||||
import io.lbry.browser.R;
|
||||
|
||||
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";
|
||||
|
||||
|
@ -58,6 +60,9 @@ public class BackgroundMediaModule extends ReactContextBaseJavaModule {
|
|||
channelCreated = true;
|
||||
}
|
||||
|
||||
Intent contextIntent = new Intent(context, MainActivity.class);
|
||||
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, contextIntent, PendingIntent.FLAG_UPDATE_CURRENT);
|
||||
|
||||
Intent playIntent = new Intent();
|
||||
playIntent.setAction(ACTION_PLAY);
|
||||
PendingIntent playPendingIntent = PendingIntent.getBroadcast(context, 0, playIntent, 0);
|
||||
|
@ -69,8 +74,10 @@ public class BackgroundMediaModule extends ReactContextBaseJavaModule {
|
|||
NotificationManagerCompat notificationManager = NotificationManagerCompat.from(context);
|
||||
NotificationCompat.Builder builder = new NotificationCompat.Builder(context, NOTIFICATION_CHANNEL_ID);
|
||||
builder.setColor(ContextCompat.getColor(context, R.color.lbrygreen))
|
||||
.setContentIntent(pendingIntent)
|
||||
.setContentTitle(title)
|
||||
.setContentText(publisher)
|
||||
.setGroup(LbrynetService.GROUP_SERVICE)
|
||||
.setOngoing(!paused)
|
||||
.setSmallIcon(paused ? android.R.drawable.ic_media_pause : android.R.drawable.ic_media_play)
|
||||
.setStyle(new android.support.v4.media.app.NotificationCompat.MediaStyle()
|
||||
|
|
Loading…
Reference in a new issue