Class MediaSessionPlugin


  • public final class MediaSessionPlugin
    extends Plugin
    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 Detail

      • MediaSessionPlugin

        public MediaSessionPlugin()
        Constructs default MediaSessionPlugin
    • Method Detail

      • enableMediaSession

        public static void enableMediaSession​(@NonNull
                                              PlayerController playerController)
        Creates and enables Media Session with default configuration. Media Session is then linked to the provided PlayerController
        Parameters:
        playerController - The PlayerController 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 provided PlayerController
        Parameters:
        playerController - The PlayerController to link the Media Session to
        sessionBuilder - The session builder to customize Media Session or null to use defaults
      • disableMediaSession

        public static void disableMediaSession​(@NonNull
                                               PlayerController playerController)
        Closes Media Session
        Parameters:
        playerController - The PlayerController to which Media Session is linked to
      • isEnabled

        public static boolean isEnabled​(@NonNull
                                        PlayerController playerController)
        Checks if Media Session is enabled
        Parameters:
        playerController - The PlayerController to which Media Session is linked to
        Returns:
        true if Media Session is enabled and false 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 - The PlayerController to which Media Session is linked to
        Returns:
        Media Session instance or null if not available