O Google tem o compromisso de promover a igualdade racial para as comunidades negras. Saiba como.

MediaControlView

public class MediaControlView
extends ViewGroup

java.lang.Object
   ↳ android.view.View
     ↳ android.view.ViewGroup
       ↳ androidx.media2.widget.MediaControlView


A View that contains the controls for MediaController or SessionPlayer. It provides a wide range of buttons that serve the following functions: play/pause, rewind/fast-forward, skip to next/previous, select subtitle track, enter/exit full screen mode, select audio track, and adjust playback speed.

For simple use cases not requiring communication with MediaSession, apps need to create a SessionPlayer (e.g. MediaPlayer) and set it to this view by calling setPlayer(SessionPlayer). For more advanced use cases that require MediaSession (e.g. handling media key events, integrating with other MediaSession apps as Assistant), apps need to create a MediaController attached to the MediaSession and set it to this view by calling setMediaController(MediaController).

The easiest way to use a MediaControlView is by creating a VideoView, which internally creates a MediaControlView instance and handles all the commands from buttons inside MediaControlView. It is also possible to create a MediaControlView programmatically and add it to a custom video view. For more information, refer to VideoView.

By default, each button in the MediaControlView is visible only when its corresponding SessionCommand is included in the active SessionCommandGroup. For more details, refer to MediaSession.setAllowedCommands(MediaSession.ControllerInfo, SessionCommandGroup).

UI transitions

The UI of an app can be in one of three modes:
  • In full mode all the views, such as progress bar, title, transport controls, and other icons are visible.
  • In progress-bar only mode the progress bar is the only visible element. The title, transport controls, and other icons are hidden.
  • In None mode all the views are hidden.
When the UI mode changes, MediaControlView animates the transition. The animation does not start immediately, there is a default delay interval of 2000ms before the animation begins. You can change this interval by calling VideoView.setMediaControlView(MediaControlView, long).

User actions can change the scheduled transition during the delay interval according to the following logic:

  1. In Full mode
    • If a touch/trackball event is received during the interval, the UI changes to None mode.
    • If no touch/trackball event is received during the interval, the UI changes to progress-bar only mode.
  2. In Progress-bar only mode
    • If a touch/trackball event is received, the UI changes to Full mode.
    • If no touch/trackball event is received, the UI changes to None mode.
  3. In None mode, if a touch/trackball event is received, the UI changes to Full mode.
All touch/trackballs events are ignored while the system is animating the change between modes.

Customization

The following customizations are supported:

Displaying metadata

MediaControlView supports displaying metadata by calling MediaItem.setMetadata(MediaMetadata). Metadata display is different for two different media types: video (with or without sound) and audio(sound only, no video)

The following table shows the metadata displayed on VideoView and the default values assigned if the keys are not set:

KeyDefault
MediaMetadata.METADATA_KEY_TITLE R.string.mcv2_music_title_unknown_text
MediaMetadata.METADATA_KEY_ARTIST R.string.mcv2_music_artist_unknown_text
MediaMetadata.METADATA_KEY_ALBUM_ART R.drawable.media2_widget_ic_default_album_image

For video media, MediaMetadata.METADATA_KEY_TITLE metadata is supported. If the value is not set, the following default value will be shown: R.string.mcv2_non_music_title_unknown_text

Summary

Nested classes

interface MediaControlView.OnFullScreenListener

Interface definition of a callback to be invoked to inform the fullscreen mode is changed. 

Inherited constants

Inherited fields

Public constructors

MediaControlView(Context context)
MediaControlView(Context context, AttributeSet attrs)
MediaControlView(Context context, AttributeSet attrs, int defStyleAttr)

Public methods

CharSequence getAccessibilityClassName()
boolean onTouchEvent(MotionEvent ev)
boolean onTrackballEvent(MotionEvent ev)
void onVisibilityAggregated(boolean isVisible)
void requestPlayButtonFocus()

Requests focus for the play/pause button.

void setMediaController(MediaController controller)

Sets MediaController to control playback with this view.

void setOnFullScreenListener(MediaControlView.OnFullScreenListener listener)

Sets a listener to be called when the fullscreen mode should be changed.

void setPlayer(SessionPlayer player)

Sets SessionPlayer to control playback with this view.

Protected methods

void onAttachedToWindow()
void onDetachedFromWindow()
void onLayout(boolean changed, int left, int top, int right, int bottom)
void onMeasure(int widthMeasureSpec, int heightMeasureSpec)
void onVisibilityChanged(View view, int visibility)
void onWindowVisibilityChanged(int visibility)

Inherited methods

Public constructors

MediaControlView

public MediaControlView (Context context)

Parameters
context Context

MediaControlView

public MediaControlView (Context context, 
                AttributeSet attrs)

Parameters
context Context

attrs AttributeSet

MediaControlView

public MediaControlView (Context context, 
                AttributeSet attrs, 
                int defStyleAttr)

Parameters
context Context

attrs AttributeSet

defStyleAttr int

Public methods

getAccessibilityClassName

public CharSequence getAccessibilityClassName ()

Returns
CharSequence

onTouchEvent

public boolean onTouchEvent (MotionEvent ev)

Parameters
ev MotionEvent

Returns
boolean

onTrackballEvent

public boolean onTrackballEvent (MotionEvent ev)

Parameters
ev MotionEvent

Returns
boolean

onVisibilityAggregated

public void onVisibilityAggregated (boolean isVisible)

Parameters
isVisible boolean

requestPlayButtonFocus

public void requestPlayButtonFocus ()

Requests focus for the play/pause button.

setMediaController

public void setMediaController (MediaController controller)

Sets MediaController to control playback with this view. Setting a MediaController will unset any MediaController or SessionPlayer that was previously set.

It will throw IllegalStateException if this MediaControlView belongs to a VideoView by R.attr.enableControlView or by VideoView.setMediaControlView(MediaControlView, long). Use VideoView.setMediaController(MediaController) instead.

Note that MediaControlView allows controlling playback through its UI components, but calling the corresponding methods (e.g. MediaController.play(), MediaController.pause()) will work as well.

Parameters
controller MediaController: the controller

setOnFullScreenListener

public void setOnFullScreenListener (MediaControlView.OnFullScreenListener listener)

Sets a listener to be called when the fullscreen mode should be changed. A non-null listener needs to be set in order to display the fullscreen button.

Parameters
listener MediaControlView.OnFullScreenListener: The listener to be called. A value of null removes any existing listener and hides the fullscreen button.

setPlayer

public void setPlayer (SessionPlayer player)

Sets SessionPlayer to control playback with this view. Setting a SessionPlayer will unset any MediaController or SessionPlayer that was previously set.

It will throw IllegalStateException if this MediaControlView belongs to a VideoView by R.attr.enableControlView or by VideoView.setMediaControlView(MediaControlView, long). Use VideoView.setPlayer(SessionPlayer) instead.

Note that MediaControlView allows controlling playback through its UI components, but calling the corresponding methods (e.g. SessionPlayer.play(), SessionPlayer.pause()) will work as well.

Parameters
player SessionPlayer: the player

Protected methods

onAttachedToWindow

protected void onAttachedToWindow ()

onDetachedFromWindow

protected void onDetachedFromWindow ()

onLayout

protected void onLayout (boolean changed, 
                int left, 
                int top, 
                int right, 
                int bottom)

Parameters
changed boolean

left int

top int

right int

bottom int

onMeasure

protected void onMeasure (int widthMeasureSpec, 
                int heightMeasureSpec)

Parameters
widthMeasureSpec int

heightMeasureSpec int

onVisibilityChanged

protected void onVisibilityChanged (View view, 
                int visibility)

Parameters
view View

visibility int

onWindowVisibilityChanged

protected void onWindowVisibilityChanged (int visibility)

Parameters
visibility int