2018-03-16 07:42:46 +01:00
|
|
|
package org.schabi.newpipe.player.helper;
|
|
|
|
|
|
|
|
import android.content.Context;
|
2018-04-03 07:11:53 +02:00
|
|
|
import android.content.Intent;
|
2018-03-16 07:42:46 +01:00
|
|
|
import android.support.annotation.NonNull;
|
2018-04-03 07:11:53 +02:00
|
|
|
import android.support.annotation.Nullable;
|
|
|
|
import android.support.v4.media.session.MediaButtonReceiver;
|
2018-03-16 07:42:46 +01:00
|
|
|
import android.support.v4.media.session.MediaSessionCompat;
|
2018-04-03 07:11:53 +02:00
|
|
|
import android.view.KeyEvent;
|
2018-03-16 07:42:46 +01:00
|
|
|
|
|
|
|
import com.google.android.exoplayer2.Player;
|
|
|
|
import com.google.android.exoplayer2.ext.mediasession.MediaSessionConnector;
|
|
|
|
|
|
|
|
import org.schabi.newpipe.player.mediasession.DummyPlaybackPreparer;
|
|
|
|
import org.schabi.newpipe.player.mediasession.MediaSessionCallback;
|
|
|
|
import org.schabi.newpipe.player.mediasession.PlayQueueNavigator;
|
|
|
|
import org.schabi.newpipe.player.mediasession.PlayQueuePlaybackController;
|
|
|
|
|
|
|
|
public class MediaSessionManager {
|
|
|
|
private static final String TAG = "MediaSessionManager";
|
|
|
|
|
2018-04-03 07:11:53 +02:00
|
|
|
@NonNull private final MediaSessionCompat mediaSession;
|
|
|
|
@NonNull private final MediaSessionConnector sessionConnector;
|
2018-03-16 07:42:46 +01:00
|
|
|
|
|
|
|
public MediaSessionManager(@NonNull final Context context,
|
|
|
|
@NonNull final Player player,
|
|
|
|
@NonNull final MediaSessionCallback callback) {
|
|
|
|
this.mediaSession = new MediaSessionCompat(context, TAG);
|
|
|
|
this.sessionConnector = new MediaSessionConnector(mediaSession,
|
|
|
|
new PlayQueuePlaybackController(callback));
|
|
|
|
this.sessionConnector.setQueueNavigator(new PlayQueueNavigator(mediaSession, callback));
|
|
|
|
this.sessionConnector.setPlayer(player, new DummyPlaybackPreparer());
|
|
|
|
}
|
|
|
|
|
2018-04-03 07:11:53 +02:00
|
|
|
@Nullable
|
|
|
|
@SuppressWarnings("UnusedReturnValue")
|
|
|
|
public KeyEvent handleMediaButtonIntent(final Intent intent) {
|
|
|
|
return MediaButtonReceiver.handleIntent(mediaSession, intent);
|
2018-03-16 07:42:46 +01:00
|
|
|
}
|
|
|
|
}
|