Package com.castlabs.sdk.mediasession
Class MediaSessionPlugin
java.lang.Object
com.castlabs.android.Plugin
com.castlabs.sdk.mediasession.MediaSessionPlugin
MediaSessionPlugin integrates castLabs Player SDK with AndroidX Media2 session APIs.
The plugin needs to be enabled before SDK initialization:
public class MyApp extends Application {
@
Override
public void onCreate() {
super.onCreate();
PlayerSDK.register(new MediaSessionPlugin());
PlayerSDK.init(getApplicationContext());
}
}
Registering the plugin does not create Media Session yet and the application will need to explicitly
request Media Session by calling enableMediaSession(PlayerController)
.
Media Session is linked to the PlayerController
and therefore the application has to provide
PlayerController
instance when enabling Media Session.
The code below enables Media Session when PlayerController
is created:
public class SimplePlaybackDemo extends Activity {
@
Override
protected void onCreate(Bundle savedInstanceState) {
// ...
PlayerView playerView = (PlayerView) findViewById(R.id.player_view);
MediaSessionPlugin.enableMediaSession(playerView.getPlayerController());
// ...
PlayerConfig playerConfig;
// playerConfig = ...
playerController.open(playerConfig);
}
@
Override
protected void onResume() {
super.onResume();
// ...
PlayerView playerView = (PlayerView) findViewById(R.id.player_view);
MediaSessionPlugin.enableMediaSession(playerView.getPlayerController());
playerView.getLifecycleDelegate().resume();
}
}
Media Session lifecycle follows PlayerController
's one and is closed automatically upon
PlayerController.destroy()
. However, it is also possible to close Media Session explicitly:
// ...
PlayerView playerView = (PlayerView) findViewById(R.id.player_view);
MediaSessionPlugin.disableMediaSession(playerView.getPlayerController());
// ...
- Since:
- 4.2.47
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionstatic void
disableMediaSession
(PlayerController playerController) Closes Media Sessionstatic void
enableMediaSession
(PlayerController playerController) Creates and enables Media Session with default configuration.static void
enableMediaSession
(PlayerController playerController, MediaSessionBuilder sessionBuilder) Creates and enables Media Session with custom configuration.getId()
static androidx.media2.session.MediaSession
getMediaSession
(PlayerController playerController) Gets Media Session instance e.g.static boolean
isEnabled
(PlayerController playerController) Checks if Media Session is enabledMethods inherited from class com.castlabs.android.Plugin
init, onRemotePlay
-
Constructor Details
-
MediaSessionPlugin
public MediaSessionPlugin()Constructs default MediaSessionPlugin
-
-
Method Details
-
enableMediaSession
Creates and enables Media Session with default configuration. Media Session is then linked to the providedPlayerController
- Parameters:
playerController
- ThePlayerController
to link the Media Session to
-
enableMediaSession
public static void enableMediaSession(@NonNull PlayerController playerController, @Nullable MediaSessionBuilder sessionBuilder) Creates and enables Media Session with custom configuration. Media Sessionand is then linked to the providedPlayerController
- Parameters:
playerController
- ThePlayerController
to link the Media Session tosessionBuilder
- The session builder to customize Media Session ornull
to use defaults
-
disableMediaSession
Closes Media Session- Parameters:
playerController
- ThePlayerController
to which Media Session is linked to
-
isEnabled
Checks if Media Session is enabled- Parameters:
playerController
- ThePlayerController
to which Media Session is linked to- Returns:
true
if Media Session is enabled andfalse
otherwise
-
getMediaSession
@Nullable public static androidx.media2.session.MediaSession getMediaSession(@NonNull PlayerController playerController) Gets Media Session instance e.g. when access to Media Session Compat Token etc is needed. The code below links Media Session with system media notification:PlayerView playerView = (PlayerView) findViewById(R.id.player_view); NotificationCompat.Builder builder = new NotificationCompat.Builder(getApplicationContext(), NOTIFICATION_CHANNEL_ID); builder.setSmallIcon(R.drawable.notifications_icon); MediaSession mediaSession = MediaSessionPlugin.getMediaSession(playerView.getPlayerController()); if (mediaSession != null) { builder.setStyle(new androidx.media.app.NotificationCompat.MediaStyle().setMediaSession(mediaSession.getSessionCompatToken())); } builder.build();
- Parameters:
playerController
- ThePlayerController
to which Media Session is linked to- Returns:
- Media Session instance or
null
if not available
-
getId
-