@@ -194,8 +194,8 @@ default void onForegroundServiceStartNotAllowedException() {}
194194  public  @interface ShowNotificationForIdlePlayerMode  {}
195195
196196  /** 
197-    * Always show a notification when the {@link Player} is in {@link Player#STATE_IDLE}, has media,  
198-    * and the  notification wasn't explicitly dismissed. 
197+    * Always show a notification when the {@link Player} is in {@link Player#STATE_IDLE} and the  
198+    * notification wasn't explicitly dismissed. 
199199   */ 
200200  @ UnstableApi  public  static  final  int  SHOW_NOTIFICATION_FOR_IDLE_PLAYER_ALWAYS  = 1 ;
201201
@@ -204,10 +204,45 @@ default void onForegroundServiceStartNotAllowedException() {}
204204
205205  /** 
206206   * Shows a notification when the {@link Player} is in {@link Player#STATE_IDLE} due to {@link 
207-    * Player#stop} or an error, has media,  and the notification wasn't explicitly dismissed. 
207+    * Player#stop} or an error, and the notification wasn't explicitly dismissed. 
208208   */ 
209209  @ UnstableApi  public  static  final  int  SHOW_NOTIFICATION_FOR_IDLE_PLAYER_AFTER_STOP_OR_ERROR  = 3 ;
210210
211+   /** 
212+    * The behavior for showing notifications when the {@link Player} has no media. 
213+    * 
214+    * <p>One of {@link #SHOW_NOTIFICATION_FOR_EMPTY_PLAYER_ALWAYS}, {@link 
215+    * #SHOW_NOTIFICATION_FOR_EMPTY_PLAYER_NEVER}, {@link 
216+    * #SHOW_NOTIFICATION_FOR_EMPTY_PLAYER_AFTER_STOP_OR_ERROR}. 
217+    * 
218+    * <p>The default value is {@link #SHOW_NOTIFICATION_FOR_EMPTY_PLAYER_NEVER}. 
219+    */ 
220+   @ UnstableApi 
221+   @ Documented 
222+   @ Retention (RetentionPolicy .SOURCE )
223+   @ Target (TYPE_USE )
224+   @ IntDef ({
225+     SHOW_NOTIFICATION_FOR_EMPTY_PLAYER_ALWAYS ,
226+     SHOW_NOTIFICATION_FOR_EMPTY_PLAYER_NEVER ,
227+     SHOW_NOTIFICATION_FOR_EMPTY_PLAYER_AFTER_STOP_OR_ERROR 
228+   })
229+   public  @interface ShowNotificationForEmptyPlayerMode  {}
230+ 
231+   /** 
232+    * Always show a notification when the {@link Player} is empty and the notification wasn't 
233+    * explicitly dismissed. 
234+    */ 
235+   @ UnstableApi  public  static  final  int  SHOW_NOTIFICATION_FOR_EMPTY_PLAYER_ALWAYS  = 1 ;
236+ 
237+   /** Never show a notification when the {@link Player} is empty. */ 
238+   @ UnstableApi  public  static  final  int  SHOW_NOTIFICATION_FOR_EMPTY_PLAYER_NEVER  = 2 ;
239+ 
240+   /** 
241+    * Shows a notification when the {@link Player} is empty, in {@link Player#STATE_IDLE} due to 
242+    * {@link Player#stop} or an error, and the notification wasn't explicitly dismissed. 
243+    */ 
244+   @ UnstableApi  public  static  final  int  SHOW_NOTIFICATION_FOR_EMPTY_PLAYER_AFTER_STOP_OR_ERROR  = 3 ;
245+ 
211246  private  static  final  String  TAG  = "MSessionService" ;
212247
213248  private  final  Object  lock ;
@@ -547,6 +582,18 @@ public final void setShowNotificationForIdlePlayer(
547582        .setShowNotificationForIdlePlayer (showNotificationForIdlePlayerMode );
548583  }
549584
585+   /** 
586+    * Sets whether and when a notification for a {@link Player} that has no media should be shown. 
587+    * 
588+    * @param showNotificationForEmptyPlayerMode The {@link ShowNotificationForEmptyPlayerMode}. 
589+    */ 
590+   @ UnstableApi 
591+   public  final  void  setShowNotificationForEmptyPlayer (
592+       @ ShowNotificationForEmptyPlayerMode  int  showNotificationForEmptyPlayerMode ) {
593+     getMediaNotificationManager ()
594+         .setShowNotificationForEmptyPlayer (showNotificationForEmptyPlayerMode );
595+   }
596+ 
550597  /** 
551598   * Returns whether there is a session with ongoing user-engaged playback that is run in a 
552599   * foreground service. 
0 commit comments