package android.support.v4.media {

  public final class MediaBrowserCompat {
    ctor public MediaBrowserCompat(android.content.Context, android.content.ComponentName, android.support.v4.media.MediaBrowserCompat.ConnectionCallback, android.os.Bundle);
    method public void connect();
    method public void disconnect();
    method public android.os.Bundle getExtras();
    method public void getItem(java.lang.String, android.support.v4.media.MediaBrowserCompat.ItemCallback);
    method public java.lang.String getRoot();
    method public android.content.ComponentName getServiceComponent();
    method public android.support.v4.media.session.MediaSessionCompat.Token getSessionToken();
    method public boolean isConnected();
    method public void search(java.lang.String, android.os.Bundle, android.support.v4.media.MediaBrowserCompat.SearchCallback);
    method public void sendCustomAction(java.lang.String, android.os.Bundle, android.support.v4.media.MediaBrowserCompat.CustomActionCallback);
    method public void subscribe(java.lang.String, android.support.v4.media.MediaBrowserCompat.SubscriptionCallback);
    method public void subscribe(java.lang.String, android.os.Bundle, android.support.v4.media.MediaBrowserCompat.SubscriptionCallback);
    method public void unsubscribe(java.lang.String);
    method public void unsubscribe(java.lang.String, android.support.v4.media.MediaBrowserCompat.SubscriptionCallback);
    field public static final java.lang.String CUSTOM_ACTION_DOWNLOAD = "android.support.v4.media.action.DOWNLOAD";
    field public static final java.lang.String CUSTOM_ACTION_REMOVE_DOWNLOADED_FILE = "android.support.v4.media.action.REMOVE_DOWNLOADED_FILE";
    field public static final java.lang.String EXTRA_DOWNLOAD_PROGRESS = "android.media.browse.extra.DOWNLOAD_PROGRESS";
    field public static final java.lang.String EXTRA_MEDIA_ID = "android.media.browse.extra.MEDIA_ID";
    field public static final java.lang.String EXTRA_PAGE = "android.media.browse.extra.PAGE";
    field public static final java.lang.String EXTRA_PAGE_SIZE = "android.media.browse.extra.PAGE_SIZE";
  }

  public static class MediaBrowserCompat.ConnectionCallback {
    ctor public MediaBrowserCompat.ConnectionCallback();
    method public void onConnected();
    method public void onConnectionFailed();
    method public void onConnectionSuspended();
  }

  public static abstract class MediaBrowserCompat.CustomActionCallback {
    ctor public MediaBrowserCompat.CustomActionCallback();
    method public void onError(java.lang.String, android.os.Bundle, android.os.Bundle);
    method public void onProgressUpdate(java.lang.String, android.os.Bundle, android.os.Bundle);
    method public void onResult(java.lang.String, android.os.Bundle, android.os.Bundle);
  }

  public static abstract class MediaBrowserCompat.ItemCallback {
    ctor public MediaBrowserCompat.ItemCallback();
    method public void onError(java.lang.String);
    method public void onItemLoaded(android.support.v4.media.MediaBrowserCompat.MediaItem);
  }

  public static class MediaBrowserCompat.MediaItem implements android.os.Parcelable {
    ctor public MediaBrowserCompat.MediaItem(android.support.v4.media.MediaDescriptionCompat, int);
    method public int describeContents();
    method public static android.support.v4.media.MediaBrowserCompat.MediaItem fromMediaItem(java.lang.Object);
    method public static java.util.List<android.support.v4.media.MediaBrowserCompat.MediaItem> fromMediaItemList(java.util.List<?>);
    method public android.support.v4.media.MediaDescriptionCompat getDescription();
    method public int getFlags();
    method public java.lang.String getMediaId();
    method public boolean isBrowsable();
    method public boolean isPlayable();
    method public void writeToParcel(android.os.Parcel, int);
    field public static final android.os.Parcelable.Creator<android.support.v4.media.MediaBrowserCompat.MediaItem> CREATOR;
    field public static final int FLAG_BROWSABLE = 1; // 0x1
    field public static final int FLAG_PLAYABLE = 2; // 0x2
  }

  public static abstract class MediaBrowserCompat.SearchCallback {
    ctor public MediaBrowserCompat.SearchCallback();
    method public void onError(java.lang.String, android.os.Bundle);
    method public void onSearchResult(java.lang.String, android.os.Bundle, java.util.List<android.support.v4.media.MediaBrowserCompat.MediaItem>);
  }

  public static abstract class MediaBrowserCompat.SubscriptionCallback {
    ctor public MediaBrowserCompat.SubscriptionCallback();
    method public void onChildrenLoaded(java.lang.String, java.util.List<android.support.v4.media.MediaBrowserCompat.MediaItem>);
    method public void onChildrenLoaded(java.lang.String, java.util.List<android.support.v4.media.MediaBrowserCompat.MediaItem>, android.os.Bundle);
    method public void onError(java.lang.String);
    method public void onError(java.lang.String, android.os.Bundle);
  }

  public final class MediaDescriptionCompat implements android.os.Parcelable {
    method public int describeContents();
    method public static android.support.v4.media.MediaDescriptionCompat fromMediaDescription(java.lang.Object);
    method public java.lang.CharSequence getDescription();
    method public android.os.Bundle getExtras();
    method public android.graphics.Bitmap getIconBitmap();
    method public android.net.Uri getIconUri();
    method public java.lang.Object getMediaDescription();
    method public java.lang.String getMediaId();
    method public android.net.Uri getMediaUri();
    method public java.lang.CharSequence getSubtitle();
    method public java.lang.CharSequence getTitle();
    method public void writeToParcel(android.os.Parcel, int);
    field public static final long BT_FOLDER_TYPE_ALBUMS = 2L; // 0x2L
    field public static final long BT_FOLDER_TYPE_ARTISTS = 3L; // 0x3L
    field public static final long BT_FOLDER_TYPE_GENRES = 4L; // 0x4L
    field public static final long BT_FOLDER_TYPE_MIXED = 0L; // 0x0L
    field public static final long BT_FOLDER_TYPE_PLAYLISTS = 5L; // 0x5L
    field public static final long BT_FOLDER_TYPE_TITLES = 1L; // 0x1L
    field public static final long BT_FOLDER_TYPE_YEARS = 6L; // 0x6L
    field public static final android.os.Parcelable.Creator<android.support.v4.media.MediaDescriptionCompat> CREATOR;
    field public static final java.lang.String EXTRA_BT_FOLDER_TYPE = "android.media.extra.BT_FOLDER_TYPE";
    field public static final java.lang.String EXTRA_DOWNLOAD_STATUS = "android.media.extra.DOWNLOAD_STATUS";
    field public static final long STATUS_DOWNLOADED = 2L; // 0x2L
    field public static final long STATUS_DOWNLOADING = 1L; // 0x1L
    field public static final long STATUS_NOT_DOWNLOADED = 0L; // 0x0L
  }

  public static final class MediaDescriptionCompat.Builder {
    ctor public MediaDescriptionCompat.Builder();
    method public android.support.v4.media.MediaDescriptionCompat build();
    method public android.support.v4.media.MediaDescriptionCompat.Builder setDescription(java.lang.CharSequence);
    method public android.support.v4.media.MediaDescriptionCompat.Builder setExtras(android.os.Bundle);
    method public android.support.v4.media.MediaDescriptionCompat.Builder setIconBitmap(android.graphics.Bitmap);
    method public android.support.v4.media.MediaDescriptionCompat.Builder setIconUri(android.net.Uri);
    method public android.support.v4.media.MediaDescriptionCompat.Builder setMediaId(java.lang.String);
    method public android.support.v4.media.MediaDescriptionCompat.Builder setMediaUri(android.net.Uri);
    method public android.support.v4.media.MediaDescriptionCompat.Builder setSubtitle(java.lang.CharSequence);
    method public android.support.v4.media.MediaDescriptionCompat.Builder setTitle(java.lang.CharSequence);
  }

  public final class MediaMetadataCompat implements android.os.Parcelable {
    method public boolean containsKey(java.lang.String);
    method public int describeContents();
    method public static android.support.v4.media.MediaMetadataCompat fromMediaMetadata(java.lang.Object);
    method public android.graphics.Bitmap getBitmap(java.lang.String);
    method public android.os.Bundle getBundle();
    method public android.support.v4.media.MediaDescriptionCompat getDescription();
    method public long getLong(java.lang.String);
    method public java.lang.Object getMediaMetadata();
    method public android.support.v4.media.RatingCompat getRating(java.lang.String);
    method public java.lang.String getString(java.lang.String);
    method public java.lang.CharSequence getText(java.lang.String);
    method public java.util.Set<java.lang.String> keySet();
    method public int size();
    method public void writeToParcel(android.os.Parcel, int);
    field public static final android.os.Parcelable.Creator<android.support.v4.media.MediaMetadataCompat> CREATOR;
    field public static final java.lang.String METADATA_KEY_ADVERTISEMENT = "android.media.metadata.ADVERTISEMENT";
    field public static final java.lang.String METADATA_KEY_ALBUM = "android.media.metadata.ALBUM";
    field public static final java.lang.String METADATA_KEY_ALBUM_ART = "android.media.metadata.ALBUM_ART";
    field public static final java.lang.String METADATA_KEY_ALBUM_ARTIST = "android.media.metadata.ALBUM_ARTIST";
    field public static final java.lang.String METADATA_KEY_ALBUM_ART_URI = "android.media.metadata.ALBUM_ART_URI";
    field public static final java.lang.String METADATA_KEY_ART = "android.media.metadata.ART";
    field public static final java.lang.String METADATA_KEY_ARTIST = "android.media.metadata.ARTIST";
    field public static final java.lang.String METADATA_KEY_ART_URI = "android.media.metadata.ART_URI";
    field public static final java.lang.String METADATA_KEY_AUTHOR = "android.media.metadata.AUTHOR";
    field public static final java.lang.String METADATA_KEY_BT_FOLDER_TYPE = "android.media.metadata.BT_FOLDER_TYPE";
    field public static final java.lang.String METADATA_KEY_COMPILATION = "android.media.metadata.COMPILATION";
    field public static final java.lang.String METADATA_KEY_COMPOSER = "android.media.metadata.COMPOSER";
    field public static final java.lang.String METADATA_KEY_DATE = "android.media.metadata.DATE";
    field public static final java.lang.String METADATA_KEY_DISC_NUMBER = "android.media.metadata.DISC_NUMBER";
    field public static final java.lang.String METADATA_KEY_DISPLAY_DESCRIPTION = "android.media.metadata.DISPLAY_DESCRIPTION";
    field public static final java.lang.String METADATA_KEY_DISPLAY_ICON = "android.media.metadata.DISPLAY_ICON";
    field public static final java.lang.String METADATA_KEY_DISPLAY_ICON_URI = "android.media.metadata.DISPLAY_ICON_URI";
    field public static final java.lang.String METADATA_KEY_DISPLAY_SUBTITLE = "android.media.metadata.DISPLAY_SUBTITLE";
    field public static final java.lang.String METADATA_KEY_DISPLAY_TITLE = "android.media.metadata.DISPLAY_TITLE";
    field public static final java.lang.String METADATA_KEY_DOWNLOAD_STATUS = "android.media.metadata.DOWNLOAD_STATUS";
    field public static final java.lang.String METADATA_KEY_DURATION = "android.media.metadata.DURATION";
    field public static final java.lang.String METADATA_KEY_GENRE = "android.media.metadata.GENRE";
    field public static final java.lang.String METADATA_KEY_MEDIA_ID = "android.media.metadata.MEDIA_ID";
    field public static final java.lang.String METADATA_KEY_MEDIA_URI = "android.media.metadata.MEDIA_URI";
    field public static final java.lang.String METADATA_KEY_NUM_TRACKS = "android.media.metadata.NUM_TRACKS";
    field public static final java.lang.String METADATA_KEY_RATING = "android.media.metadata.RATING";
    field public static final java.lang.String METADATA_KEY_TITLE = "android.media.metadata.TITLE";
    field public static final java.lang.String METADATA_KEY_TRACK_NUMBER = "android.media.metadata.TRACK_NUMBER";
    field public static final java.lang.String METADATA_KEY_USER_RATING = "android.media.metadata.USER_RATING";
    field public static final java.lang.String METADATA_KEY_WRITER = "android.media.metadata.WRITER";
    field public static final java.lang.String METADATA_KEY_YEAR = "android.media.metadata.YEAR";
  }

  public static final class MediaMetadataCompat.Builder {
    ctor public MediaMetadataCompat.Builder();
    ctor public MediaMetadataCompat.Builder(android.support.v4.media.MediaMetadataCompat);
    method public android.support.v4.media.MediaMetadataCompat build();
    method public android.support.v4.media.MediaMetadataCompat.Builder putBitmap(java.lang.String, android.graphics.Bitmap);
    method public android.support.v4.media.MediaMetadataCompat.Builder putLong(java.lang.String, long);
    method public android.support.v4.media.MediaMetadataCompat.Builder putRating(java.lang.String, android.support.v4.media.RatingCompat);
    method public android.support.v4.media.MediaMetadataCompat.Builder putString(java.lang.String, java.lang.String);
    method public android.support.v4.media.MediaMetadataCompat.Builder putText(java.lang.String, java.lang.CharSequence);
  }

  public final class RatingCompat implements android.os.Parcelable {
    method public int describeContents();
    method public static android.support.v4.media.RatingCompat fromRating(java.lang.Object);
    method public float getPercentRating();
    method public java.lang.Object getRating();
    method public int getRatingStyle();
    method public float getStarRating();
    method public boolean hasHeart();
    method public boolean isRated();
    method public boolean isThumbUp();
    method public static android.support.v4.media.RatingCompat newHeartRating(boolean);
    method public static android.support.v4.media.RatingCompat newPercentageRating(float);
    method public static android.support.v4.media.RatingCompat newStarRating(int, float);
    method public static android.support.v4.media.RatingCompat newThumbRating(boolean);
    method public static android.support.v4.media.RatingCompat newUnratedRating(int);
    method public void writeToParcel(android.os.Parcel, int);
    field public static final android.os.Parcelable.Creator<android.support.v4.media.RatingCompat> CREATOR;
    field public static final int RATING_3_STARS = 3; // 0x3
    field public static final int RATING_4_STARS = 4; // 0x4
    field public static final int RATING_5_STARS = 5; // 0x5
    field public static final int RATING_HEART = 1; // 0x1
    field public static final int RATING_NONE = 0; // 0x0
    field public static final int RATING_PERCENTAGE = 6; // 0x6
    field public static final int RATING_THUMB_UP_DOWN = 2; // 0x2
  }

}

package android.support.v4.media.session {

  public final class MediaControllerCompat {
    ctor public MediaControllerCompat(android.content.Context, android.support.v4.media.session.MediaSessionCompat);
    ctor public MediaControllerCompat(android.content.Context, android.support.v4.media.session.MediaSessionCompat.Token) throws android.os.RemoteException;
    method public void addQueueItem(android.support.v4.media.MediaDescriptionCompat);
    method public void addQueueItem(android.support.v4.media.MediaDescriptionCompat, int);
    method public void adjustVolume(int, int);
    method public boolean dispatchMediaButtonEvent(android.view.KeyEvent);
    method public android.os.Bundle getExtras();
    method public long getFlags();
    method public static android.support.v4.media.session.MediaControllerCompat getMediaController(android.app.Activity);
    method public java.lang.Object getMediaController();
    method public android.support.v4.media.MediaMetadataCompat getMetadata();
    method public java.lang.String getPackageName();
    method public android.support.v4.media.session.MediaControllerCompat.PlaybackInfo getPlaybackInfo();
    method public android.support.v4.media.session.PlaybackStateCompat getPlaybackState();
    method public java.util.List<android.support.v4.media.session.MediaSessionCompat.QueueItem> getQueue();
    method public java.lang.CharSequence getQueueTitle();
    method public int getRatingType();
    method public int getRepeatMode();
    method public android.app.PendingIntent getSessionActivity();
    method public android.support.v4.media.session.MediaSessionCompat.Token getSessionToken();
    method public int getShuffleMode();
    method public android.support.v4.media.session.MediaControllerCompat.TransportControls getTransportControls();
    method public boolean isCaptioningEnabled();
    method public boolean isSessionReady();
    method public void registerCallback(android.support.v4.media.session.MediaControllerCompat.Callback);
    method public void registerCallback(android.support.v4.media.session.MediaControllerCompat.Callback, android.os.Handler);
    method public void removeQueueItem(android.support.v4.media.MediaDescriptionCompat);
    method public deprecated void removeQueueItemAt(int);
    method public void sendCommand(java.lang.String, android.os.Bundle, android.os.ResultReceiver);
    method public static void setMediaController(android.app.Activity, android.support.v4.media.session.MediaControllerCompat);
    method public void setVolumeTo(int, int);
    method public void unregisterCallback(android.support.v4.media.session.MediaControllerCompat.Callback);
  }

  public static abstract class MediaControllerCompat.Callback implements android.os.IBinder.DeathRecipient {
    ctor public MediaControllerCompat.Callback();
    method public void binderDied();
    method public void onAudioInfoChanged(android.support.v4.media.session.MediaControllerCompat.PlaybackInfo);
    method public void onCaptioningEnabledChanged(boolean);
    method public void onExtrasChanged(android.os.Bundle);
    method public void onMetadataChanged(android.support.v4.media.MediaMetadataCompat);
    method public void onPlaybackStateChanged(android.support.v4.media.session.PlaybackStateCompat);
    method public void onQueueChanged(java.util.List<android.support.v4.media.session.MediaSessionCompat.QueueItem>);
    method public void onQueueTitleChanged(java.lang.CharSequence);
    method public void onRepeatModeChanged(int);
    method public void onSessionDestroyed();
    method public void onSessionEvent(java.lang.String, android.os.Bundle);
    method public void onSessionReady();
    method public void onShuffleModeChanged(int);
  }

  public static final class MediaControllerCompat.PlaybackInfo {
    method public int getAudioStream();
    method public int getCurrentVolume();
    method public int getMaxVolume();
    method public int getPlaybackType();
    method public int getVolumeControl();
    field public static final int PLAYBACK_TYPE_LOCAL = 1; // 0x1
    field public static final int PLAYBACK_TYPE_REMOTE = 2; // 0x2
  }

  public static abstract class MediaControllerCompat.TransportControls {
    method public abstract void fastForward();
    method public abstract void pause();
    method public abstract void play();
    method public abstract void playFromMediaId(java.lang.String, android.os.Bundle);
    method public abstract void playFromSearch(java.lang.String, android.os.Bundle);
    method public abstract void playFromUri(android.net.Uri, android.os.Bundle);
    method public abstract void prepare();
    method public abstract void prepareFromMediaId(java.lang.String, android.os.Bundle);
    method public abstract void prepareFromSearch(java.lang.String, android.os.Bundle);
    method public abstract void prepareFromUri(android.net.Uri, android.os.Bundle);
    method public abstract void rewind();
    method public abstract void seekTo(long);
    method public abstract void sendCustomAction(android.support.v4.media.session.PlaybackStateCompat.CustomAction, android.os.Bundle);
    method public abstract void sendCustomAction(java.lang.String, android.os.Bundle);
    method public abstract void setCaptioningEnabled(boolean);
    method public abstract void setRating(android.support.v4.media.RatingCompat);
    method public abstract void setRating(android.support.v4.media.RatingCompat, android.os.Bundle);
    method public abstract void setRepeatMode(int);
    method public abstract void setShuffleMode(int);
    method public abstract void skipToNext();
    method public abstract void skipToPrevious();
    method public abstract void skipToQueueItem(long);
    method public abstract void stop();
    field public static final java.lang.String EXTRA_LEGACY_STREAM_TYPE = "android.media.session.extra.LEGACY_STREAM_TYPE";
  }

  public class MediaSessionCompat {
    ctor public MediaSessionCompat(android.content.Context, java.lang.String);
    ctor public MediaSessionCompat(android.content.Context, java.lang.String, android.content.ComponentName, android.app.PendingIntent);
    method public void addOnActiveChangeListener(android.support.v4.media.session.MediaSessionCompat.OnActiveChangeListener);
    method public static android.support.v4.media.session.MediaSessionCompat fromMediaSession(android.content.Context, java.lang.Object);
    method public android.support.v4.media.session.MediaControllerCompat getController();
    method public final androidx.media.MediaSessionManager.RemoteUserInfo getCurrentControllerInfo();
    method public java.lang.Object getMediaSession();
    method public java.lang.Object getRemoteControlClient();
    method public android.support.v4.media.session.MediaSessionCompat.Token getSessionToken();
    method public boolean isActive();
    method public void release();
    method public void removeOnActiveChangeListener(android.support.v4.media.session.MediaSessionCompat.OnActiveChangeListener);
    method public void sendSessionEvent(java.lang.String, android.os.Bundle);
    method public void setActive(boolean);
    method public void setCallback(android.support.v4.media.session.MediaSessionCompat.Callback);
    method public void setCallback(android.support.v4.media.session.MediaSessionCompat.Callback, android.os.Handler);
    method public void setCaptioningEnabled(boolean);
    method public void setExtras(android.os.Bundle);
    method public void setFlags(int);
    method public void setMediaButtonReceiver(android.app.PendingIntent);
    method public void setMetadata(android.support.v4.media.MediaMetadataCompat);
    method public void setPlaybackState(android.support.v4.media.session.PlaybackStateCompat);
    method public void setPlaybackToLocal(int);
    method public void setPlaybackToRemote(androidx.media.VolumeProviderCompat);
    method public void setQueue(java.util.List<android.support.v4.media.session.MediaSessionCompat.QueueItem>);
    method public void setQueueTitle(java.lang.CharSequence);
    method public void setRatingType(int);
    method public void setRepeatMode(int);
    method public void setSessionActivity(android.app.PendingIntent);
    method public void setShuffleMode(int);
    field public static final java.lang.String ACTION_FLAG_AS_INAPPROPRIATE = "android.support.v4.media.session.action.FLAG_AS_INAPPROPRIATE";
    field public static final java.lang.String ACTION_FOLLOW = "android.support.v4.media.session.action.FOLLOW";
    field public static final java.lang.String ACTION_SKIP_AD = "android.support.v4.media.session.action.SKIP_AD";
    field public static final java.lang.String ACTION_UNFOLLOW = "android.support.v4.media.session.action.UNFOLLOW";
    field public static final java.lang.String ARGUMENT_MEDIA_ATTRIBUTE = "android.support.v4.media.session.ARGUMENT_MEDIA_ATTRIBUTE";
    field public static final java.lang.String ARGUMENT_MEDIA_ATTRIBUTE_VALUE = "android.support.v4.media.session.ARGUMENT_MEDIA_ATTRIBUTE_VALUE";
    field public static final int FLAG_HANDLES_MEDIA_BUTTONS = 1; // 0x1
    field public static final int FLAG_HANDLES_QUEUE_COMMANDS = 4; // 0x4
    field public static final int FLAG_HANDLES_TRANSPORT_CONTROLS = 2; // 0x2
    field public static final int MEDIA_ATTRIBUTE_ALBUM = 1; // 0x1
    field public static final int MEDIA_ATTRIBUTE_ARTIST = 0; // 0x0
    field public static final int MEDIA_ATTRIBUTE_PLAYLIST = 2; // 0x2
  }

  public static abstract class MediaSessionCompat.Callback {
    ctor public MediaSessionCompat.Callback();
    method public void onAddQueueItem(android.support.v4.media.MediaDescriptionCompat);
    method public void onAddQueueItem(android.support.v4.media.MediaDescriptionCompat, int);
    method public void onCommand(java.lang.String, android.os.Bundle, android.os.ResultReceiver);
    method public void onCustomAction(java.lang.String, android.os.Bundle);
    method public void onFastForward();
    method public boolean onMediaButtonEvent(android.content.Intent);
    method public void onPause();
    method public void onPlay();
    method public void onPlayFromMediaId(java.lang.String, android.os.Bundle);
    method public void onPlayFromSearch(java.lang.String, android.os.Bundle);
    method public void onPlayFromUri(android.net.Uri, android.os.Bundle);
    method public void onPrepare();
    method public void onPrepareFromMediaId(java.lang.String, android.os.Bundle);
    method public void onPrepareFromSearch(java.lang.String, android.os.Bundle);
    method public void onPrepareFromUri(android.net.Uri, android.os.Bundle);
    method public void onRemoveQueueItem(android.support.v4.media.MediaDescriptionCompat);
    method public deprecated void onRemoveQueueItemAt(int);
    method public void onRewind();
    method public void onSeekTo(long);
    method public void onSetCaptioningEnabled(boolean);
    method public void onSetRating(android.support.v4.media.RatingCompat);
    method public void onSetRating(android.support.v4.media.RatingCompat, android.os.Bundle);
    method public void onSetRepeatMode(int);
    method public void onSetShuffleMode(int);
    method public void onSkipToNext();
    method public void onSkipToPrevious();
    method public void onSkipToQueueItem(long);
    method public void onStop();
  }

  public static abstract interface MediaSessionCompat.OnActiveChangeListener {
    method public abstract void onActiveChanged();
  }

  public static final class MediaSessionCompat.QueueItem implements android.os.Parcelable {
    ctor public MediaSessionCompat.QueueItem(android.support.v4.media.MediaDescriptionCompat, long);
    method public int describeContents();
    method public static android.support.v4.media.session.MediaSessionCompat.QueueItem fromQueueItem(java.lang.Object);
    method public static java.util.List<android.support.v4.media.session.MediaSessionCompat.QueueItem> fromQueueItemList(java.util.List<?>);
    method public android.support.v4.media.MediaDescriptionCompat getDescription();
    method public long getQueueId();
    method public java.lang.Object getQueueItem();
    method public void writeToParcel(android.os.Parcel, int);
    field public static final android.os.Parcelable.Creator<android.support.v4.media.session.MediaSessionCompat.QueueItem> CREATOR;
    field public static final int UNKNOWN_ID = -1; // 0xffffffff
  }

  public static final class MediaSessionCompat.Token implements android.os.Parcelable {
    method public int describeContents();
    method public static android.support.v4.media.session.MediaSessionCompat.Token fromToken(java.lang.Object);
    method public java.lang.Object getToken();
    method public void writeToParcel(android.os.Parcel, int);
    field public static final android.os.Parcelable.Creator<android.support.v4.media.session.MediaSessionCompat.Token> CREATOR;
  }

  public class ParcelableVolumeInfo implements android.os.Parcelable {
    ctor public ParcelableVolumeInfo(int, int, int, int, int);
    ctor public ParcelableVolumeInfo(android.os.Parcel);
    method public int describeContents();
    method public void writeToParcel(android.os.Parcel, int);
    field public static final android.os.Parcelable.Creator<android.support.v4.media.session.ParcelableVolumeInfo> CREATOR;
    field public int audioStream;
    field public int controlType;
    field public int currentVolume;
    field public int maxVolume;
    field public int volumeType;
  }

  public final class PlaybackStateCompat implements android.os.Parcelable {
    method public int describeContents();
    method public static android.support.v4.media.session.PlaybackStateCompat fromPlaybackState(java.lang.Object);
    method public long getActions();
    method public long getActiveQueueItemId();
    method public long getBufferedPosition();
    method public java.util.List<android.support.v4.media.session.PlaybackStateCompat.CustomAction> getCustomActions();
    method public int getErrorCode();
    method public java.lang.CharSequence getErrorMessage();
    method public android.os.Bundle getExtras();
    method public long getLastPositionUpdateTime();
    method public float getPlaybackSpeed();
    method public java.lang.Object getPlaybackState();
    method public long getPosition();
    method public int getState();
    method public static int toKeyCode(long);
    method public void writeToParcel(android.os.Parcel, int);
    field public static final long ACTION_FAST_FORWARD = 64L; // 0x40L
    field public static final long ACTION_PAUSE = 2L; // 0x2L
    field public static final long ACTION_PLAY = 4L; // 0x4L
    field public static final long ACTION_PLAY_FROM_MEDIA_ID = 1024L; // 0x400L
    field public static final long ACTION_PLAY_FROM_SEARCH = 2048L; // 0x800L
    field public static final long ACTION_PLAY_FROM_URI = 8192L; // 0x2000L
    field public static final long ACTION_PLAY_PAUSE = 512L; // 0x200L
    field public static final long ACTION_PREPARE = 16384L; // 0x4000L
    field public static final long ACTION_PREPARE_FROM_MEDIA_ID = 32768L; // 0x8000L
    field public static final long ACTION_PREPARE_FROM_SEARCH = 65536L; // 0x10000L
    field public static final long ACTION_PREPARE_FROM_URI = 131072L; // 0x20000L
    field public static final long ACTION_REWIND = 8L; // 0x8L
    field public static final long ACTION_SEEK_TO = 256L; // 0x100L
    field public static final long ACTION_SET_CAPTIONING_ENABLED = 1048576L; // 0x100000L
    field public static final long ACTION_SET_RATING = 128L; // 0x80L
    field public static final long ACTION_SET_REPEAT_MODE = 262144L; // 0x40000L
    field public static final long ACTION_SET_SHUFFLE_MODE = 2097152L; // 0x200000L
    field public static final deprecated long ACTION_SET_SHUFFLE_MODE_ENABLED = 524288L; // 0x80000L
    field public static final long ACTION_SKIP_TO_NEXT = 32L; // 0x20L
    field public static final long ACTION_SKIP_TO_PREVIOUS = 16L; // 0x10L
    field public static final long ACTION_SKIP_TO_QUEUE_ITEM = 4096L; // 0x1000L
    field public static final long ACTION_STOP = 1L; // 0x1L
    field public static final android.os.Parcelable.Creator<android.support.v4.media.session.PlaybackStateCompat> CREATOR;
    field public static final int ERROR_CODE_ACTION_ABORTED = 10; // 0xa
    field public static final int ERROR_CODE_APP_ERROR = 1; // 0x1
    field public static final int ERROR_CODE_AUTHENTICATION_EXPIRED = 3; // 0x3
    field public static final int ERROR_CODE_CONCURRENT_STREAM_LIMIT = 5; // 0x5
    field public static final int ERROR_CODE_CONTENT_ALREADY_PLAYING = 8; // 0x8
    field public static final int ERROR_CODE_END_OF_QUEUE = 11; // 0xb
    field public static final int ERROR_CODE_NOT_AVAILABLE_IN_REGION = 7; // 0x7
    field public static final int ERROR_CODE_NOT_SUPPORTED = 2; // 0x2
    field public static final int ERROR_CODE_PARENTAL_CONTROL_RESTRICTED = 6; // 0x6
    field public static final int ERROR_CODE_PREMIUM_ACCOUNT_REQUIRED = 4; // 0x4
    field public static final int ERROR_CODE_SKIP_LIMIT_REACHED = 9; // 0x9
    field public static final int ERROR_CODE_UNKNOWN_ERROR = 0; // 0x0
    field public static final long PLAYBACK_POSITION_UNKNOWN = -1L; // 0xffffffffffffffffL
    field public static final int REPEAT_MODE_ALL = 2; // 0x2
    field public static final int REPEAT_MODE_GROUP = 3; // 0x3
    field public static final int REPEAT_MODE_INVALID = -1; // 0xffffffff
    field public static final int REPEAT_MODE_NONE = 0; // 0x0
    field public static final int REPEAT_MODE_ONE = 1; // 0x1
    field public static final int SHUFFLE_MODE_ALL = 1; // 0x1
    field public static final int SHUFFLE_MODE_GROUP = 2; // 0x2
    field public static final int SHUFFLE_MODE_INVALID = -1; // 0xffffffff
    field public static final int SHUFFLE_MODE_NONE = 0; // 0x0
    field public static final int STATE_BUFFERING = 6; // 0x6
    field public static final int STATE_CONNECTING = 8; // 0x8
    field public static final int STATE_ERROR = 7; // 0x7
    field public static final int STATE_FAST_FORWARDING = 4; // 0x4
    field public static final int STATE_NONE = 0; // 0x0
    field public static final int STATE_PAUSED = 2; // 0x2
    field public static final int STATE_PLAYING = 3; // 0x3
    field public static final int STATE_REWINDING = 5; // 0x5
    field public static final int STATE_SKIPPING_TO_NEXT = 10; // 0xa
    field public static final int STATE_SKIPPING_TO_PREVIOUS = 9; // 0x9
    field public static final int STATE_SKIPPING_TO_QUEUE_ITEM = 11; // 0xb
    field public static final int STATE_STOPPED = 1; // 0x1
  }

  public static final class PlaybackStateCompat.Builder {
    ctor public PlaybackStateCompat.Builder();
    ctor public PlaybackStateCompat.Builder(android.support.v4.media.session.PlaybackStateCompat);
    method public android.support.v4.media.session.PlaybackStateCompat.Builder addCustomAction(java.lang.String, java.lang.String, int);
    method public android.support.v4.media.session.PlaybackStateCompat.Builder addCustomAction(android.support.v4.media.session.PlaybackStateCompat.CustomAction);
    method public android.support.v4.media.session.PlaybackStateCompat build();
    method public android.support.v4.media.session.PlaybackStateCompat.Builder setActions(long);
    method public android.support.v4.media.session.PlaybackStateCompat.Builder setActiveQueueItemId(long);
    method public android.support.v4.media.session.PlaybackStateCompat.Builder setBufferedPosition(long);
    method public deprecated android.support.v4.media.session.PlaybackStateCompat.Builder setErrorMessage(java.lang.CharSequence);
    method public android.support.v4.media.session.PlaybackStateCompat.Builder setErrorMessage(int, java.lang.CharSequence);
    method public android.support.v4.media.session.PlaybackStateCompat.Builder setExtras(android.os.Bundle);
    method public android.support.v4.media.session.PlaybackStateCompat.Builder setState(int, long, float);
    method public android.support.v4.media.session.PlaybackStateCompat.Builder setState(int, long, float, long);
  }

  public static final class PlaybackStateCompat.CustomAction implements android.os.Parcelable {
    method public int describeContents();
    method public static android.support.v4.media.session.PlaybackStateCompat.CustomAction fromCustomAction(java.lang.Object);
    method public java.lang.String getAction();
    method public java.lang.Object getCustomAction();
    method public android.os.Bundle getExtras();
    method public int getIcon();
    method public java.lang.CharSequence getName();
    method public void writeToParcel(android.os.Parcel, int);
    field public static final android.os.Parcelable.Creator<android.support.v4.media.session.PlaybackStateCompat.CustomAction> CREATOR;
  }

  public static final class PlaybackStateCompat.CustomAction.Builder {
    ctor public PlaybackStateCompat.CustomAction.Builder(java.lang.String, java.lang.CharSequence, int);
    method public android.support.v4.media.session.PlaybackStateCompat.CustomAction build();
    method public android.support.v4.media.session.PlaybackStateCompat.CustomAction.Builder setExtras(android.os.Bundle);
  }

}

package androidx.media {

  public class AudioAttributesCompat {
    method public int getContentType();
    method public int getFlags();
    method public int getLegacyStreamType();
    method public int getUsage();
    method public int getVolumeControlStream();
    method public java.lang.Object unwrap();
    method public static androidx.media.AudioAttributesCompat wrap(java.lang.Object);
    field public static final int CONTENT_TYPE_MOVIE = 3; // 0x3
    field public static final int CONTENT_TYPE_MUSIC = 2; // 0x2
    field public static final int CONTENT_TYPE_SONIFICATION = 4; // 0x4
    field public static final int CONTENT_TYPE_SPEECH = 1; // 0x1
    field public static final int CONTENT_TYPE_UNKNOWN = 0; // 0x0
    field public static final int FLAG_AUDIBILITY_ENFORCED = 1; // 0x1
    field public static final int FLAG_HW_AV_SYNC = 16; // 0x10
    field public static final int USAGE_ALARM = 4; // 0x4
    field public static final int USAGE_ASSISTANCE_ACCESSIBILITY = 11; // 0xb
    field public static final int USAGE_ASSISTANCE_NAVIGATION_GUIDANCE = 12; // 0xc
    field public static final int USAGE_ASSISTANCE_SONIFICATION = 13; // 0xd
    field public static final int USAGE_ASSISTANT = 16; // 0x10
    field public static final int USAGE_GAME = 14; // 0xe
    field public static final int USAGE_MEDIA = 1; // 0x1
    field public static final int USAGE_NOTIFICATION = 5; // 0x5
    field public static final int USAGE_NOTIFICATION_COMMUNICATION_DELAYED = 9; // 0x9
    field public static final int USAGE_NOTIFICATION_COMMUNICATION_INSTANT = 8; // 0x8
    field public static final int USAGE_NOTIFICATION_COMMUNICATION_REQUEST = 7; // 0x7
    field public static final int USAGE_NOTIFICATION_EVENT = 10; // 0xa
    field public static final int USAGE_NOTIFICATION_RINGTONE = 6; // 0x6
    field public static final int USAGE_UNKNOWN = 0; // 0x0
    field public static final int USAGE_VOICE_COMMUNICATION = 2; // 0x2
    field public static final int USAGE_VOICE_COMMUNICATION_SIGNALLING = 3; // 0x3
  }

  public static class AudioAttributesCompat.Builder {
    ctor public AudioAttributesCompat.Builder();
    ctor public AudioAttributesCompat.Builder(androidx.media.AudioAttributesCompat);
    method public androidx.media.AudioAttributesCompat build();
    method public androidx.media.AudioAttributesCompat.Builder setContentType(int);
    method public androidx.media.AudioAttributesCompat.Builder setFlags(int);
    method public androidx.media.AudioAttributesCompat.Builder setLegacyStreamType(int);
    method public androidx.media.AudioAttributesCompat.Builder setUsage(int);
  }

  public final class DataSourceDesc {
    method public long getEndPosition();
    method public java.io.FileDescriptor getFileDescriptor();
    method public long getFileDescriptorLength();
    method public long getFileDescriptorOffset();
    method public androidx.media.Media2DataSource getMedia2DataSource();
    method public java.lang.String getMediaId();
    method public long getStartPosition();
    method public int getType();
    method public android.net.Uri getUri();
    method public android.content.Context getUriContext();
    method public java.util.List<java.net.HttpCookie> getUriCookies();
    method public java.util.Map<java.lang.String, java.lang.String> getUriHeaders();
    field public static final long FD_LENGTH_UNKNOWN = 576460752303423487L; // 0x7ffffffffffffffL
    field public static final long POSITION_UNKNOWN = 576460752303423487L; // 0x7ffffffffffffffL
    field public static final int TYPE_CALLBACK = 1; // 0x1
    field public static final int TYPE_FD = 2; // 0x2
    field public static final int TYPE_NONE = 0; // 0x0
    field public static final int TYPE_URI = 3; // 0x3
  }

  public static class DataSourceDesc.Builder {
    ctor public DataSourceDesc.Builder();
    ctor public DataSourceDesc.Builder(androidx.media.DataSourceDesc);
    method public androidx.media.DataSourceDesc build();
    method public androidx.media.DataSourceDesc.Builder setDataSource(androidx.media.Media2DataSource);
    method public androidx.media.DataSourceDesc.Builder setDataSource(java.io.FileDescriptor);
    method public androidx.media.DataSourceDesc.Builder setDataSource(java.io.FileDescriptor, long, long);
    method public androidx.media.DataSourceDesc.Builder setDataSource(android.content.Context, android.net.Uri);
    method public androidx.media.DataSourceDesc.Builder setDataSource(android.content.Context, android.net.Uri, java.util.Map<java.lang.String, java.lang.String>, java.util.List<java.net.HttpCookie>);
    method public androidx.media.DataSourceDesc.Builder setEndPosition(long);
    method public androidx.media.DataSourceDesc.Builder setMediaId(java.lang.String);
    method public androidx.media.DataSourceDesc.Builder setStartPosition(long);
  }

  public abstract class Media2DataSource implements java.io.Closeable {
    ctor public Media2DataSource();
    method public abstract long getSize() throws java.io.IOException;
    method public abstract int readAt(long, byte[], int, int) throws java.io.IOException;
  }

  public class MediaBrowser2 extends androidx.media.MediaController2 {
    ctor public MediaBrowser2(android.content.Context, androidx.media.SessionToken2, java.util.concurrent.Executor, androidx.media.MediaBrowser2.BrowserCallback);
    method public void getChildren(java.lang.String, int, int, android.os.Bundle);
    method public void getItem(java.lang.String);
    method public void getLibraryRoot(android.os.Bundle);
    method public void getSearchResult(java.lang.String, int, int, android.os.Bundle);
    method public void search(java.lang.String, android.os.Bundle);
    method public void subscribe(java.lang.String, android.os.Bundle);
    method public void unsubscribe(java.lang.String);
  }

  public static class MediaBrowser2.BrowserCallback extends androidx.media.MediaController2.ControllerCallback {
    ctor public MediaBrowser2.BrowserCallback();
    method public void onChildrenChanged(androidx.media.MediaBrowser2, java.lang.String, int, android.os.Bundle);
    method public void onGetChildrenDone(androidx.media.MediaBrowser2, java.lang.String, int, int, java.util.List<androidx.media.MediaItem2>, android.os.Bundle);
    method public void onGetItemDone(androidx.media.MediaBrowser2, java.lang.String, androidx.media.MediaItem2);
    method public void onGetLibraryRootDone(androidx.media.MediaBrowser2, android.os.Bundle, java.lang.String, android.os.Bundle);
    method public void onGetSearchResultDone(androidx.media.MediaBrowser2, java.lang.String, int, int, java.util.List<androidx.media.MediaItem2>, android.os.Bundle);
    method public void onSearchResultChanged(androidx.media.MediaBrowser2, java.lang.String, int, android.os.Bundle);
  }

  public abstract class MediaBrowserServiceCompat extends android.app.Service {
    ctor public MediaBrowserServiceCompat();
    method public void dump(java.io.FileDescriptor, java.io.PrintWriter, java.lang.String[]);
    method public final android.os.Bundle getBrowserRootHints();
    method public final androidx.media.MediaSessionManager.RemoteUserInfo getCurrentBrowserInfo();
    method public android.support.v4.media.session.MediaSessionCompat.Token getSessionToken();
    method public void notifyChildrenChanged(java.lang.String);
    method public void notifyChildrenChanged(java.lang.String, android.os.Bundle);
    method public android.os.IBinder onBind(android.content.Intent);
    method public void onCustomAction(java.lang.String, android.os.Bundle, androidx.media.MediaBrowserServiceCompat.Result<android.os.Bundle>);
    method public abstract androidx.media.MediaBrowserServiceCompat.BrowserRoot onGetRoot(java.lang.String, int, android.os.Bundle);
    method public abstract void onLoadChildren(java.lang.String, androidx.media.MediaBrowserServiceCompat.Result<java.util.List<android.support.v4.media.MediaBrowserCompat.MediaItem>>);
    method public void onLoadChildren(java.lang.String, androidx.media.MediaBrowserServiceCompat.Result<java.util.List<android.support.v4.media.MediaBrowserCompat.MediaItem>>, android.os.Bundle);
    method public void onLoadItem(java.lang.String, androidx.media.MediaBrowserServiceCompat.Result<android.support.v4.media.MediaBrowserCompat.MediaItem>);
    method public void onSearch(java.lang.String, android.os.Bundle, androidx.media.MediaBrowserServiceCompat.Result<java.util.List<android.support.v4.media.MediaBrowserCompat.MediaItem>>);
    method public void setSessionToken(android.support.v4.media.session.MediaSessionCompat.Token);
    field public static final java.lang.String SERVICE_INTERFACE = "android.media.browse.MediaBrowserService";
  }

  public static final class MediaBrowserServiceCompat.BrowserRoot {
    ctor public MediaBrowserServiceCompat.BrowserRoot(java.lang.String, android.os.Bundle);
    method public android.os.Bundle getExtras();
    method public java.lang.String getRootId();
    field public static final java.lang.String EXTRA_OFFLINE = "android.service.media.extra.OFFLINE";
    field public static final java.lang.String EXTRA_RECENT = "android.service.media.extra.RECENT";
    field public static final java.lang.String EXTRA_SUGGESTED = "android.service.media.extra.SUGGESTED";
    field public static final deprecated java.lang.String EXTRA_SUGGESTION_KEYWORDS = "android.service.media.extra.SUGGESTION_KEYWORDS";
  }

  public static class MediaBrowserServiceCompat.Result<T> {
    method public void detach();
    method public void sendError(android.os.Bundle);
    method public void sendProgressUpdate(android.os.Bundle);
    method public void sendResult(T);
  }

  public class MediaController2 implements java.lang.AutoCloseable {
    ctor public MediaController2(android.content.Context, androidx.media.SessionToken2, java.util.concurrent.Executor, androidx.media.MediaController2.ControllerCallback);
    method public void addPlaylistItem(int, androidx.media.MediaItem2);
    method public void adjustVolume(int, int);
    method public void close();
    method public void fastForward();
    method public long getBufferedPosition();
    method public int getBufferingState();
    method public androidx.media.MediaItem2 getCurrentMediaItem();
    method public long getCurrentPosition();
    method public long getDuration();
    method public androidx.media.MediaController2.PlaybackInfo getPlaybackInfo();
    method public float getPlaybackSpeed();
    method public int getPlayerState();
    method public java.util.List<androidx.media.MediaItem2> getPlaylist();
    method public androidx.media.MediaMetadata2 getPlaylistMetadata();
    method public int getRepeatMode();
    method public android.app.PendingIntent getSessionActivity();
    method public androidx.media.SessionToken2 getSessionToken();
    method public int getShuffleMode();
    method public boolean isConnected();
    method public void pause();
    method public void play();
    method public void playFromMediaId(java.lang.String, android.os.Bundle);
    method public void playFromSearch(java.lang.String, android.os.Bundle);
    method public void playFromUri(android.net.Uri, android.os.Bundle);
    method public void prepare();
    method public void prepareFromMediaId(java.lang.String, android.os.Bundle);
    method public void prepareFromSearch(java.lang.String, android.os.Bundle);
    method public void prepareFromUri(android.net.Uri, android.os.Bundle);
    method public void removePlaylistItem(androidx.media.MediaItem2);
    method public void replacePlaylistItem(int, androidx.media.MediaItem2);
    method public void reset();
    method public void rewind();
    method public void seekTo(long);
    method public void selectRoute(android.os.Bundle);
    method public void sendCustomCommand(androidx.media.SessionCommand2, android.os.Bundle, android.os.ResultReceiver);
    method public void setPlaybackSpeed(float);
    method public void setPlaylist(java.util.List<androidx.media.MediaItem2>, androidx.media.MediaMetadata2);
    method public void setRating(java.lang.String, androidx.media.Rating2);
    method public void setRepeatMode(int);
    method public void setShuffleMode(int);
    method public void setVolumeTo(int, int);
    method public void skipToNextItem();
    method public void skipToPlaylistItem(androidx.media.MediaItem2);
    method public void skipToPreviousItem();
    method public void subscribeRoutesInfo();
    method public void unsubscribeRoutesInfo();
    method public void updatePlaylistMetadata(androidx.media.MediaMetadata2);
  }

  public static abstract class MediaController2.ControllerCallback {
    ctor public MediaController2.ControllerCallback();
    method public void onAllowedCommandsChanged(androidx.media.MediaController2, androidx.media.SessionCommandGroup2);
    method public void onBufferingStateChanged(androidx.media.MediaController2, androidx.media.MediaItem2, int);
    method public void onConnected(androidx.media.MediaController2, androidx.media.SessionCommandGroup2);
    method public void onCurrentMediaItemChanged(androidx.media.MediaController2, androidx.media.MediaItem2);
    method public void onCustomCommand(androidx.media.MediaController2, androidx.media.SessionCommand2, android.os.Bundle, android.os.ResultReceiver);
    method public void onCustomLayoutChanged(androidx.media.MediaController2, java.util.List<androidx.media.MediaSession2.CommandButton>);
    method public void onDisconnected(androidx.media.MediaController2);
    method public void onError(androidx.media.MediaController2, int, android.os.Bundle);
    method public void onPlaybackInfoChanged(androidx.media.MediaController2, androidx.media.MediaController2.PlaybackInfo);
    method public void onPlaybackSpeedChanged(androidx.media.MediaController2, float);
    method public void onPlayerStateChanged(androidx.media.MediaController2, int);
    method public void onPlaylistChanged(androidx.media.MediaController2, java.util.List<androidx.media.MediaItem2>, androidx.media.MediaMetadata2);
    method public void onPlaylistMetadataChanged(androidx.media.MediaController2, androidx.media.MediaMetadata2);
    method public void onRepeatModeChanged(androidx.media.MediaController2, int);
    method public void onRoutesInfoChanged(androidx.media.MediaController2, java.util.List<android.os.Bundle>);
    method public void onSeekCompleted(androidx.media.MediaController2, long);
    method public void onShuffleModeChanged(androidx.media.MediaController2, int);
  }

  public static final class MediaController2.PlaybackInfo {
    method public androidx.media.AudioAttributesCompat getAudioAttributes();
    method public int getControlType();
    method public int getCurrentVolume();
    method public int getMaxVolume();
    method public int getPlaybackType();
    field public static final int PLAYBACK_TYPE_LOCAL = 1; // 0x1
    field public static final int PLAYBACK_TYPE_REMOTE = 2; // 0x2
  }

  public class MediaItem2 {
    method public static androidx.media.MediaItem2 fromBundle(android.os.Bundle);
    method public androidx.media.DataSourceDesc getDataSourceDesc();
    method public int getFlags();
    method public java.lang.String getMediaId();
    method public androidx.media.MediaMetadata2 getMetadata();
    method public boolean isBrowsable();
    method public boolean isPlayable();
    method public void setMetadata(androidx.media.MediaMetadata2);
    method public android.os.Bundle toBundle();
    field public static final int FLAG_BROWSABLE = 1; // 0x1
    field public static final int FLAG_PLAYABLE = 2; // 0x2
  }

  public static final class MediaItem2.Builder {
    ctor public MediaItem2.Builder(int);
    method public androidx.media.MediaItem2 build();
    method public androidx.media.MediaItem2.Builder setDataSourceDesc(androidx.media.DataSourceDesc);
    method public androidx.media.MediaItem2.Builder setMediaId(java.lang.String);
    method public androidx.media.MediaItem2.Builder setMetadata(androidx.media.MediaMetadata2);
  }

  public abstract class MediaLibraryService2 extends androidx.media.MediaSessionService2 {
    ctor public MediaLibraryService2();
    method public abstract androidx.media.MediaLibraryService2.MediaLibrarySession onCreateSession(java.lang.String);
    field public static final java.lang.String SERVICE_INTERFACE = "android.media.MediaLibraryService2";
  }

  public static final class MediaLibraryService2.LibraryRoot {
    ctor public MediaLibraryService2.LibraryRoot(java.lang.String, android.os.Bundle);
    method public android.os.Bundle getExtras();
    method public java.lang.String getRootId();
    field public static final java.lang.String EXTRA_OFFLINE = "android.media.extra.OFFLINE";
    field public static final java.lang.String EXTRA_RECENT = "android.media.extra.RECENT";
    field public static final java.lang.String EXTRA_SUGGESTED = "android.media.extra.SUGGESTED";
  }

  public static final class MediaLibraryService2.MediaLibrarySession extends androidx.media.MediaSession2 {
    method public void notifyChildrenChanged(androidx.media.MediaSession2.ControllerInfo, java.lang.String, int, android.os.Bundle);
    method public void notifyChildrenChanged(java.lang.String, int, android.os.Bundle);
    method public void notifySearchResultChanged(androidx.media.MediaSession2.ControllerInfo, java.lang.String, int, android.os.Bundle);
  }

  public static final class MediaLibraryService2.MediaLibrarySession.Builder {
    ctor public MediaLibraryService2.MediaLibrarySession.Builder(androidx.media.MediaLibraryService2, java.util.concurrent.Executor, androidx.media.MediaLibraryService2.MediaLibrarySession.MediaLibrarySessionCallback);
    method public androidx.media.MediaLibraryService2.MediaLibrarySession build();
    method public androidx.media.MediaLibraryService2.MediaLibrarySession.Builder setId(java.lang.String);
    method public androidx.media.MediaLibraryService2.MediaLibrarySession.Builder setPlayer(androidx.media.MediaPlayerInterface);
    method public androidx.media.MediaLibraryService2.MediaLibrarySession.Builder setPlaylistAgent(androidx.media.MediaPlaylistAgent);
    method public androidx.media.MediaLibraryService2.MediaLibrarySession.Builder setSessionActivity(android.app.PendingIntent);
    method public androidx.media.MediaLibraryService2.MediaLibrarySession.Builder setVolumeProvider(androidx.media.VolumeProviderCompat);
  }

  public static class MediaLibraryService2.MediaLibrarySession.MediaLibrarySessionCallback extends androidx.media.MediaSession2.SessionCallback {
    ctor public MediaLibraryService2.MediaLibrarySession.MediaLibrarySessionCallback();
    method public java.util.List<androidx.media.MediaItem2> onGetChildren(androidx.media.MediaLibraryService2.MediaLibrarySession, androidx.media.MediaSession2.ControllerInfo, java.lang.String, int, int, android.os.Bundle);
    method public androidx.media.MediaItem2 onGetItem(androidx.media.MediaLibraryService2.MediaLibrarySession, androidx.media.MediaSession2.ControllerInfo, java.lang.String);
    method public androidx.media.MediaLibraryService2.LibraryRoot onGetLibraryRoot(androidx.media.MediaLibraryService2.MediaLibrarySession, androidx.media.MediaSession2.ControllerInfo, android.os.Bundle);
    method public java.util.List<androidx.media.MediaItem2> onGetSearchResult(androidx.media.MediaLibraryService2.MediaLibrarySession, androidx.media.MediaSession2.ControllerInfo, java.lang.String, int, int, android.os.Bundle);
    method public void onSearch(androidx.media.MediaLibraryService2.MediaLibrarySession, androidx.media.MediaSession2.ControllerInfo, java.lang.String, android.os.Bundle);
    method public void onSubscribe(androidx.media.MediaLibraryService2.MediaLibrarySession, androidx.media.MediaSession2.ControllerInfo, java.lang.String, android.os.Bundle);
    method public void onUnsubscribe(androidx.media.MediaLibraryService2.MediaLibrarySession, androidx.media.MediaSession2.ControllerInfo, java.lang.String);
  }

  public final class MediaMetadata2 {
    method public boolean containsKey(java.lang.String);
    method public static androidx.media.MediaMetadata2 fromBundle(android.os.Bundle);
    method public android.graphics.Bitmap getBitmap(java.lang.String);
    method public android.os.Bundle getExtras();
    method public float getFloat(java.lang.String);
    method public long getLong(java.lang.String);
    method public java.lang.String getMediaId();
    method public androidx.media.Rating2 getRating(java.lang.String);
    method public java.lang.String getString(java.lang.String);
    method public java.lang.CharSequence getText(java.lang.String);
    method public java.util.Set<java.lang.String> keySet();
    method public int size();
    method public android.os.Bundle toBundle();
    field public static final long BT_FOLDER_TYPE_ALBUMS = 2L; // 0x2L
    field public static final long BT_FOLDER_TYPE_ARTISTS = 3L; // 0x3L
    field public static final long BT_FOLDER_TYPE_GENRES = 4L; // 0x4L
    field public static final long BT_FOLDER_TYPE_MIXED = 0L; // 0x0L
    field public static final long BT_FOLDER_TYPE_PLAYLISTS = 5L; // 0x5L
    field public static final long BT_FOLDER_TYPE_TITLES = 1L; // 0x1L
    field public static final long BT_FOLDER_TYPE_YEARS = 6L; // 0x6L
    field public static final java.lang.String METADATA_KEY_ADVERTISEMENT = "android.media.metadata.ADVERTISEMENT";
    field public static final java.lang.String METADATA_KEY_ALBUM = "android.media.metadata.ALBUM";
    field public static final java.lang.String METADATA_KEY_ALBUM_ART = "android.media.metadata.ALBUM_ART";
    field public static final java.lang.String METADATA_KEY_ALBUM_ARTIST = "android.media.metadata.ALBUM_ARTIST";
    field public static final java.lang.String METADATA_KEY_ALBUM_ART_URI = "android.media.metadata.ALBUM_ART_URI";
    field public static final java.lang.String METADATA_KEY_ART = "android.media.metadata.ART";
    field public static final java.lang.String METADATA_KEY_ARTIST = "android.media.metadata.ARTIST";
    field public static final java.lang.String METADATA_KEY_ART_URI = "android.media.metadata.ART_URI";
    field public static final java.lang.String METADATA_KEY_AUTHOR = "android.media.metadata.AUTHOR";
    field public static final java.lang.String METADATA_KEY_BT_FOLDER_TYPE = "android.media.metadata.BT_FOLDER_TYPE";
    field public static final java.lang.String METADATA_KEY_COMPILATION = "android.media.metadata.COMPILATION";
    field public static final java.lang.String METADATA_KEY_COMPOSER = "android.media.metadata.COMPOSER";
    field public static final java.lang.String METADATA_KEY_DATE = "android.media.metadata.DATE";
    field public static final java.lang.String METADATA_KEY_DISC_NUMBER = "android.media.metadata.DISC_NUMBER";
    field public static final java.lang.String METADATA_KEY_DISPLAY_DESCRIPTION = "android.media.metadata.DISPLAY_DESCRIPTION";
    field public static final java.lang.String METADATA_KEY_DISPLAY_ICON = "android.media.metadata.DISPLAY_ICON";
    field public static final java.lang.String METADATA_KEY_DISPLAY_ICON_URI = "android.media.metadata.DISPLAY_ICON_URI";
    field public static final java.lang.String METADATA_KEY_DISPLAY_SUBTITLE = "android.media.metadata.DISPLAY_SUBTITLE";
    field public static final java.lang.String METADATA_KEY_DISPLAY_TITLE = "android.media.metadata.DISPLAY_TITLE";
    field public static final java.lang.String METADATA_KEY_DOWNLOAD_STATUS = "android.media.metadata.DOWNLOAD_STATUS";
    field public static final java.lang.String METADATA_KEY_DURATION = "android.media.metadata.DURATION";
    field public static final java.lang.String METADATA_KEY_EXTRAS = "android.media.metadata.EXTRAS";
    field public static final java.lang.String METADATA_KEY_GENRE = "android.media.metadata.GENRE";
    field public static final java.lang.String METADATA_KEY_MEDIA_ID = "android.media.metadata.MEDIA_ID";
    field public static final java.lang.String METADATA_KEY_MEDIA_URI = "android.media.metadata.MEDIA_URI";
    field public static final java.lang.String METADATA_KEY_NUM_TRACKS = "android.media.metadata.NUM_TRACKS";
    field public static final java.lang.String METADATA_KEY_RATING = "android.media.metadata.RATING";
    field public static final java.lang.String METADATA_KEY_TITLE = "android.media.metadata.TITLE";
    field public static final java.lang.String METADATA_KEY_TRACK_NUMBER = "android.media.metadata.TRACK_NUMBER";
    field public static final java.lang.String METADATA_KEY_USER_RATING = "android.media.metadata.USER_RATING";
    field public static final java.lang.String METADATA_KEY_WRITER = "android.media.metadata.WRITER";
    field public static final java.lang.String METADATA_KEY_YEAR = "android.media.metadata.YEAR";
    field public static final long STATUS_DOWNLOADED = 2L; // 0x2L
    field public static final long STATUS_DOWNLOADING = 1L; // 0x1L
    field public static final long STATUS_NOT_DOWNLOADED = 0L; // 0x0L
  }

  public static final class MediaMetadata2.Builder {
    ctor public MediaMetadata2.Builder();
    ctor public MediaMetadata2.Builder(androidx.media.MediaMetadata2);
    method public androidx.media.MediaMetadata2 build();
    method public androidx.media.MediaMetadata2.Builder putBitmap(java.lang.String, android.graphics.Bitmap);
    method public androidx.media.MediaMetadata2.Builder putFloat(java.lang.String, float);
    method public androidx.media.MediaMetadata2.Builder putLong(java.lang.String, long);
    method public androidx.media.MediaMetadata2.Builder putRating(java.lang.String, androidx.media.Rating2);
    method public androidx.media.MediaMetadata2.Builder putString(java.lang.String, java.lang.String);
    method public androidx.media.MediaMetadata2.Builder putText(java.lang.String, java.lang.CharSequence);
    method public androidx.media.MediaMetadata2.Builder setExtras(android.os.Bundle);
  }

  public abstract class MediaPlayer2 {
    method public abstract void attachAuxEffect(int);
    method public abstract void clearDrmEventCallback();
    method public abstract void clearMediaPlayer2EventCallback();
    method public abstract void clearPendingCommands();
    method public abstract void close();
    method public static final androidx.media.MediaPlayer2 create();
    method public abstract void deselectTrack(int);
    method public abstract androidx.media.AudioAttributesCompat getAudioAttributes();
    method public abstract int getAudioSessionId();
    method public abstract long getBufferedPosition();
    method public abstract androidx.media.DataSourceDesc getCurrentDataSource();
    method public abstract long getCurrentPosition();
    method public abstract androidx.media.MediaPlayer2.DrmInfo getDrmInfo();
    method public abstract android.media.MediaDrm.KeyRequest getDrmKeyRequest(byte[], byte[], java.lang.String, int, java.util.Map<java.lang.String, java.lang.String>) throws androidx.media.MediaPlayer2.NoDrmSchemeException;
    method public abstract java.lang.String getDrmPropertyString(java.lang.String) throws androidx.media.MediaPlayer2.NoDrmSchemeException;
    method public abstract long getDuration();
    method public float getMaxPlayerVolume();
    method public abstract int getMediaPlayer2State();
    method public abstract androidx.media.MediaPlayerInterface getMediaPlayerInterface();
    method public abstract android.os.PersistableBundle getMetrics();
    method public abstract android.media.PlaybackParams getPlaybackParams();
    method public float getPlaybackSpeed();
    method public abstract float getPlayerVolume();
    method public abstract int getSelectedTrack(int);
    method public abstract android.media.SyncParams getSyncParams();
    method public abstract android.media.MediaTimestamp getTimestamp();
    method public abstract java.util.List<androidx.media.MediaPlayer2.TrackInfo> getTrackInfo();
    method public abstract int getVideoHeight();
    method public abstract int getVideoWidth();
    method public boolean isReversePlaybackSupported();
    method public abstract void loopCurrent(boolean);
    method public void notifyWhenCommandLabelReached(java.lang.Object);
    method public abstract void pause();
    method public abstract void play();
    method public abstract void prepare();
    method public abstract void prepareDrm(java.util.UUID) throws androidx.media.MediaPlayer2.ProvisioningNetworkErrorException, androidx.media.MediaPlayer2.ProvisioningServerErrorException, android.media.ResourceBusyException, android.media.UnsupportedSchemeException;
    method public abstract byte[] provideDrmKeyResponse(byte[], byte[]) throws android.media.DeniedByServerException, androidx.media.MediaPlayer2.NoDrmSchemeException;
    method public abstract void releaseDrm() throws androidx.media.MediaPlayer2.NoDrmSchemeException;
    method public abstract void reset();
    method public abstract void restoreDrmKeys(byte[]) throws androidx.media.MediaPlayer2.NoDrmSchemeException;
    method public void seekTo(long);
    method public abstract void seekTo(long, int);
    method public abstract void selectTrack(int);
    method public abstract void setAudioAttributes(androidx.media.AudioAttributesCompat);
    method public abstract void setAudioSessionId(int);
    method public abstract void setAuxEffectSendLevel(float);
    method public abstract void setDataSource(androidx.media.DataSourceDesc);
    method public abstract void setDrmEventCallback(java.util.concurrent.Executor, androidx.media.MediaPlayer2.DrmEventCallback);
    method public abstract void setDrmPropertyString(java.lang.String, java.lang.String) throws androidx.media.MediaPlayer2.NoDrmSchemeException;
    method public abstract void setMediaPlayer2EventCallback(java.util.concurrent.Executor, androidx.media.MediaPlayer2.MediaPlayer2EventCallback);
    method public abstract void setNextDataSource(androidx.media.DataSourceDesc);
    method public abstract void setNextDataSources(java.util.List<androidx.media.DataSourceDesc>);
    method public abstract void setOnDrmConfigHelper(androidx.media.MediaPlayer2.OnDrmConfigHelper);
    method public abstract void setPlaybackParams(android.media.PlaybackParams);
    method public abstract void setPlaybackSpeed(float);
    method public abstract void setPlayerVolume(float);
    method public abstract void setSurface(android.view.Surface);
    method public abstract void setSyncParams(android.media.SyncParams);
    method public abstract void skipToNext();
    field public static final int CALL_COMPLETED_ATTACH_AUX_EFFECT = 1; // 0x1
    field public static final int CALL_COMPLETED_DESELECT_TRACK = 2; // 0x2
    field public static final int CALL_COMPLETED_LOOP_CURRENT = 3; // 0x3
    field public static final int CALL_COMPLETED_PAUSE = 4; // 0x4
    field public static final int CALL_COMPLETED_PLAY = 5; // 0x5
    field public static final int CALL_COMPLETED_PREPARE = 6; // 0x6
    field public static final int CALL_COMPLETED_SEEK_TO = 14; // 0xe
    field public static final int CALL_COMPLETED_SELECT_TRACK = 15; // 0xf
    field public static final int CALL_COMPLETED_SET_AUDIO_ATTRIBUTES = 16; // 0x10
    field public static final int CALL_COMPLETED_SET_AUDIO_SESSION_ID = 17; // 0x11
    field public static final int CALL_COMPLETED_SET_AUX_EFFECT_SEND_LEVEL = 18; // 0x12
    field public static final int CALL_COMPLETED_SET_DATA_SOURCE = 19; // 0x13
    field public static final int CALL_COMPLETED_SET_NEXT_DATA_SOURCE = 22; // 0x16
    field public static final int CALL_COMPLETED_SET_NEXT_DATA_SOURCES = 23; // 0x17
    field public static final int CALL_COMPLETED_SET_PLAYBACK_PARAMS = 24; // 0x18
    field public static final int CALL_COMPLETED_SET_PLAYBACK_SPEED = 25; // 0x19
    field public static final int CALL_COMPLETED_SET_PLAYER_VOLUME = 26; // 0x1a
    field public static final int CALL_COMPLETED_SET_SURFACE = 27; // 0x1b
    field public static final int CALL_COMPLETED_SET_SYNC_PARAMS = 28; // 0x1c
    field public static final int CALL_COMPLETED_SKIP_TO_NEXT = 29; // 0x1d
    field public static final int CALL_STATUS_BAD_VALUE = 2; // 0x2
    field public static final int CALL_STATUS_ERROR_IO = 4; // 0x4
    field public static final int CALL_STATUS_ERROR_UNKNOWN = -2147483648; // 0x80000000
    field public static final int CALL_STATUS_INVALID_OPERATION = 1; // 0x1
    field public static final int CALL_STATUS_NO_ERROR = 0; // 0x0
    field public static final int CALL_STATUS_PERMISSION_DENIED = 3; // 0x3
    field public static final int MEDIAPLAYER2_STATE_ERROR = 1005; // 0x3ed
    field public static final int MEDIAPLAYER2_STATE_IDLE = 1001; // 0x3e9
    field public static final int MEDIAPLAYER2_STATE_PAUSED = 1003; // 0x3eb
    field public static final int MEDIAPLAYER2_STATE_PLAYING = 1004; // 0x3ec
    field public static final int MEDIAPLAYER2_STATE_PREPARED = 1002; // 0x3ea
    field public static final int MEDIA_ERROR_IO = -1004; // 0xfffffc14
    field public static final int MEDIA_ERROR_MALFORMED = -1007; // 0xfffffc11
    field public static final int MEDIA_ERROR_NOT_VALID_FOR_PROGRESSIVE_PLAYBACK = 200; // 0xc8
    field public static final int MEDIA_ERROR_TIMED_OUT = -110; // 0xffffff92
    field public static final int MEDIA_ERROR_UNKNOWN = 1; // 0x1
    field public static final int MEDIA_ERROR_UNSUPPORTED = -1010; // 0xfffffc0e
    field public static final int MEDIA_INFO_AUDIO_NOT_PLAYING = 804; // 0x324
    field public static final int MEDIA_INFO_AUDIO_RENDERING_START = 4; // 0x4
    field public static final int MEDIA_INFO_BAD_INTERLEAVING = 800; // 0x320
    field public static final int MEDIA_INFO_BUFFERING_END = 702; // 0x2be
    field public static final int MEDIA_INFO_BUFFERING_START = 701; // 0x2bd
    field public static final int MEDIA_INFO_BUFFERING_UPDATE = 704; // 0x2c0
    field public static final int MEDIA_INFO_METADATA_UPDATE = 802; // 0x322
    field public static final int MEDIA_INFO_NOT_SEEKABLE = 801; // 0x321
    field public static final int MEDIA_INFO_PLAYBACK_COMPLETE = 5; // 0x5
    field public static final int MEDIA_INFO_PLAYLIST_END = 6; // 0x6
    field public static final int MEDIA_INFO_PREPARED = 100; // 0x64
    field public static final int MEDIA_INFO_SUBTITLE_TIMED_OUT = 902; // 0x386
    field public static final int MEDIA_INFO_UNKNOWN = 1; // 0x1
    field public static final int MEDIA_INFO_UNSUPPORTED_SUBTITLE = 901; // 0x385
    field public static final int MEDIA_INFO_VIDEO_NOT_PLAYING = 805; // 0x325
    field public static final int MEDIA_INFO_VIDEO_RENDERING_START = 3; // 0x3
    field public static final int MEDIA_INFO_VIDEO_TRACK_LAGGING = 700; // 0x2bc
    field public static final int PREPARE_DRM_STATUS_PREPARATION_ERROR = 3; // 0x3
    field public static final int PREPARE_DRM_STATUS_PROVISIONING_NETWORK_ERROR = 1; // 0x1
    field public static final int PREPARE_DRM_STATUS_PROVISIONING_SERVER_ERROR = 2; // 0x2
    field public static final int PREPARE_DRM_STATUS_SUCCESS = 0; // 0x0
    field public static final int SEEK_CLOSEST = 3; // 0x3
    field public static final int SEEK_CLOSEST_SYNC = 2; // 0x2
    field public static final int SEEK_NEXT_SYNC = 1; // 0x1
    field public static final int SEEK_PREVIOUS_SYNC = 0; // 0x0
    field public static final int VIDEO_SCALING_MODE_SCALE_TO_FIT = 1; // 0x1
  }

  public static abstract class MediaPlayer2.DrmEventCallback {
    ctor public MediaPlayer2.DrmEventCallback();
    method public void onDrmInfo(androidx.media.MediaPlayer2, androidx.media.DataSourceDesc, androidx.media.MediaPlayer2.DrmInfo);
    method public void onDrmPrepared(androidx.media.MediaPlayer2, androidx.media.DataSourceDesc, int);
  }

  public static abstract class MediaPlayer2.DrmInfo {
    ctor public MediaPlayer2.DrmInfo();
    method public abstract java.util.Map<java.util.UUID, byte[]> getPssh();
    method public abstract java.util.List<java.util.UUID> getSupportedSchemes();
  }

  public static abstract class MediaPlayer2.MediaPlayer2EventCallback {
    ctor public MediaPlayer2.MediaPlayer2EventCallback();
    method public void onCallCompleted(androidx.media.MediaPlayer2, androidx.media.DataSourceDesc, int, int);
    method public void onCommandLabelReached(androidx.media.MediaPlayer2, java.lang.Object);
    method public void onError(androidx.media.MediaPlayer2, androidx.media.DataSourceDesc, int, int);
    method public void onInfo(androidx.media.MediaPlayer2, androidx.media.DataSourceDesc, int, int);
    method public void onMediaTimeDiscontinuity(androidx.media.MediaPlayer2, androidx.media.DataSourceDesc, android.media.MediaTimestamp);
    method public void onSubtitleData(androidx.media.MediaPlayer2, androidx.media.DataSourceDesc, android.media.SubtitleData);
    method public void onTimedMetaDataAvailable(androidx.media.MediaPlayer2, androidx.media.DataSourceDesc, android.media.TimedMetaData);
    method public void onVideoSizeChanged(androidx.media.MediaPlayer2, androidx.media.DataSourceDesc, int, int);
  }

  public static final class MediaPlayer2.MetricsConstants {
    field public static final java.lang.String CODEC_AUDIO = "android.media.mediaplayer.audio.codec";
    field public static final java.lang.String CODEC_VIDEO = "android.media.mediaplayer.video.codec";
    field public static final java.lang.String DURATION = "android.media.mediaplayer.durationMs";
    field public static final java.lang.String ERRORS = "android.media.mediaplayer.err";
    field public static final java.lang.String ERROR_CODE = "android.media.mediaplayer.errcode";
    field public static final java.lang.String FRAMES = "android.media.mediaplayer.frames";
    field public static final java.lang.String FRAMES_DROPPED = "android.media.mediaplayer.dropped";
    field public static final java.lang.String HEIGHT = "android.media.mediaplayer.height";
    field public static final java.lang.String MIME_TYPE_AUDIO = "android.media.mediaplayer.audio.mime";
    field public static final java.lang.String MIME_TYPE_VIDEO = "android.media.mediaplayer.video.mime";
    field public static final java.lang.String PLAYING = "android.media.mediaplayer.playingMs";
    field public static final java.lang.String WIDTH = "android.media.mediaplayer.width";
  }

  public static class MediaPlayer2.NoDrmSchemeException extends android.media.MediaDrmException {
    ctor public MediaPlayer2.NoDrmSchemeException(java.lang.String);
  }

  public static abstract interface MediaPlayer2.OnDrmConfigHelper {
    method public abstract void onDrmConfig(androidx.media.MediaPlayer2, androidx.media.DataSourceDesc);
  }

  public static class MediaPlayer2.ProvisioningNetworkErrorException extends android.media.MediaDrmException {
    ctor public MediaPlayer2.ProvisioningNetworkErrorException(java.lang.String);
  }

  public static class MediaPlayer2.ProvisioningServerErrorException extends android.media.MediaDrmException {
    ctor public MediaPlayer2.ProvisioningServerErrorException(java.lang.String);
  }

  public static abstract class MediaPlayer2.TrackInfo {
    ctor public MediaPlayer2.TrackInfo();
    method public abstract android.media.MediaFormat getFormat();
    method public abstract java.lang.String getLanguage();
    method public abstract int getTrackType();
    method public abstract java.lang.String toString();
    field public static final int MEDIA_TRACK_TYPE_AUDIO = 2; // 0x2
    field public static final int MEDIA_TRACK_TYPE_METADATA = 5; // 0x5
    field public static final int MEDIA_TRACK_TYPE_SUBTITLE = 4; // 0x4
    field public static final int MEDIA_TRACK_TYPE_UNKNOWN = 0; // 0x0
    field public static final int MEDIA_TRACK_TYPE_VIDEO = 1; // 0x1
  }

  public abstract class MediaPlayerInterface implements java.lang.AutoCloseable {
    ctor public MediaPlayerInterface();
    method public abstract androidx.media.AudioAttributesCompat getAudioAttributes();
    method public long getBufferedPosition();
    method public abstract int getBufferingState();
    method public abstract androidx.media.DataSourceDesc getCurrentDataSource();
    method public long getCurrentPosition();
    method public long getDuration();
    method public float getMaxPlayerVolume();
    method public float getPlaybackSpeed();
    method public abstract int getPlayerState();
    method public abstract float getPlayerVolume();
    method public boolean isReversePlaybackSupported();
    method public abstract void loopCurrent(boolean);
    method public abstract void pause();
    method public abstract void play();
    method public abstract void prepare();
    method public abstract void registerPlayerEventCallback(java.util.concurrent.Executor, androidx.media.MediaPlayerInterface.PlayerEventCallback);
    method public abstract void reset();
    method public abstract void seekTo(long);
    method public abstract void setAudioAttributes(androidx.media.AudioAttributesCompat);
    method public abstract void setDataSource(androidx.media.DataSourceDesc);
    method public abstract void setNextDataSource(androidx.media.DataSourceDesc);
    method public abstract void setNextDataSources(java.util.List<androidx.media.DataSourceDesc>);
    method public abstract void setPlaybackSpeed(float);
    method public abstract void setPlayerVolume(float);
    method public abstract void skipToNext();
    method public abstract void unregisterPlayerEventCallback(androidx.media.MediaPlayerInterface.PlayerEventCallback);
    field public static final int BUFFERING_STATE_BUFFERING_AND_PLAYABLE = 1; // 0x1
    field public static final int BUFFERING_STATE_BUFFERING_AND_STARVED = 2; // 0x2
    field public static final int BUFFERING_STATE_BUFFERING_COMPLETE = 3; // 0x3
    field public static final int BUFFERING_STATE_UNKNOWN = 0; // 0x0
    field public static final int PLAYER_STATE_ERROR = 3; // 0x3
    field public static final int PLAYER_STATE_IDLE = 0; // 0x0
    field public static final int PLAYER_STATE_PAUSED = 1; // 0x1
    field public static final int PLAYER_STATE_PLAYING = 2; // 0x2
    field public static final long UNKNOWN_TIME = -1L; // 0xffffffffffffffffL
  }

  public static abstract class MediaPlayerInterface.PlayerEventCallback {
    ctor public MediaPlayerInterface.PlayerEventCallback();
    method public void onBufferingStateChanged(androidx.media.MediaPlayerInterface, androidx.media.DataSourceDesc, int);
    method public void onCurrentDataSourceChanged(androidx.media.MediaPlayerInterface, androidx.media.DataSourceDesc);
    method public void onMediaPrepared(androidx.media.MediaPlayerInterface, androidx.media.DataSourceDesc);
    method public void onPlaybackSpeedChanged(androidx.media.MediaPlayerInterface, float);
    method public void onPlayerStateChanged(androidx.media.MediaPlayerInterface, int);
    method public void onSeekCompleted(androidx.media.MediaPlayerInterface, long);
  }

  public abstract class MediaPlaylistAgent {
    ctor public MediaPlaylistAgent();
    method public abstract void addPlaylistItem(int, androidx.media.MediaItem2);
    method public abstract androidx.media.MediaItem2 getCurrentMediaItem();
    method public androidx.media.MediaItem2 getMediaItem(androidx.media.DataSourceDesc);
    method public abstract java.util.List<androidx.media.MediaItem2> getPlaylist();
    method public abstract androidx.media.MediaMetadata2 getPlaylistMetadata();
    method public abstract int getRepeatMode();
    method public abstract int getShuffleMode();
    method public final void notifyPlaylistChanged();
    method public final void notifyPlaylistMetadataChanged();
    method public final void notifyRepeatModeChanged();
    method public final void notifyShuffleModeChanged();
    method public final void registerPlaylistEventCallback(java.util.concurrent.Executor, androidx.media.MediaPlaylistAgent.PlaylistEventCallback);
    method public abstract void removePlaylistItem(androidx.media.MediaItem2);
    method public abstract void replacePlaylistItem(int, androidx.media.MediaItem2);
    method public abstract void setPlaylist(java.util.List<androidx.media.MediaItem2>, androidx.media.MediaMetadata2);
    method public abstract void setRepeatMode(int);
    method public abstract void setShuffleMode(int);
    method public abstract void skipToNextItem();
    method public abstract void skipToPlaylistItem(androidx.media.MediaItem2);
    method public abstract void skipToPreviousItem();
    method public final void unregisterPlaylistEventCallback(androidx.media.MediaPlaylistAgent.PlaylistEventCallback);
    method public abstract void updatePlaylistMetadata(androidx.media.MediaMetadata2);
    field public static final int REPEAT_MODE_ALL = 2; // 0x2
    field public static final int REPEAT_MODE_GROUP = 3; // 0x3
    field public static final int REPEAT_MODE_NONE = 0; // 0x0
    field public static final int REPEAT_MODE_ONE = 1; // 0x1
    field public static final int SHUFFLE_MODE_ALL = 1; // 0x1
    field public static final int SHUFFLE_MODE_GROUP = 2; // 0x2
    field public static final int SHUFFLE_MODE_NONE = 0; // 0x0
  }

  public static abstract class MediaPlaylistAgent.PlaylistEventCallback {
    ctor public MediaPlaylistAgent.PlaylistEventCallback();
    method public void onPlaylistChanged(androidx.media.MediaPlaylistAgent, java.util.List<androidx.media.MediaItem2>, androidx.media.MediaMetadata2);
    method public void onPlaylistMetadataChanged(androidx.media.MediaPlaylistAgent, androidx.media.MediaMetadata2);
    method public void onRepeatModeChanged(androidx.media.MediaPlaylistAgent, int);
    method public void onShuffleModeChanged(androidx.media.MediaPlaylistAgent, int);
  }

  public class MediaSession2 implements java.lang.AutoCloseable {
    method public void addPlaylistItem(int, androidx.media.MediaItem2);
    method public void clearOnDataSourceMissingHelper();
    method public void close();
    method public long getBufferedPosition();
    method public int getBufferingState();
    method public java.util.List<androidx.media.MediaSession2.ControllerInfo> getConnectedControllers();
    method public androidx.media.MediaItem2 getCurrentMediaItem();
    method public long getCurrentPosition();
    method public long getDuration();
    method public float getPlaybackSpeed();
    method public androidx.media.MediaPlayerInterface getPlayer();
    method public int getPlayerState();
    method public java.util.List<androidx.media.MediaItem2> getPlaylist();
    method public androidx.media.MediaPlaylistAgent getPlaylistAgent();
    method public androidx.media.MediaMetadata2 getPlaylistMetadata();
    method public int getRepeatMode();
    method public int getShuffleMode();
    method public androidx.media.SessionToken2 getToken();
    method public androidx.media.VolumeProviderCompat getVolumeProvider();
    method public void notifyError(int, android.os.Bundle);
    method public void notifyRoutesInfoChanged(androidx.media.MediaSession2.ControllerInfo, java.util.List<android.os.Bundle>);
    method public void pause();
    method public void play();
    method public void prepare();
    method public void removePlaylistItem(androidx.media.MediaItem2);
    method public void replacePlaylistItem(int, androidx.media.MediaItem2);
    method public void reset();
    method public void seekTo(long);
    method public void sendCustomCommand(androidx.media.SessionCommand2, android.os.Bundle);
    method public void sendCustomCommand(androidx.media.MediaSession2.ControllerInfo, androidx.media.SessionCommand2, android.os.Bundle, android.os.ResultReceiver);
    method public void setAllowedCommands(androidx.media.MediaSession2.ControllerInfo, androidx.media.SessionCommandGroup2);
    method public void setAudioFocusRequest(android.media.AudioFocusRequest);
    method public void setCustomLayout(androidx.media.MediaSession2.ControllerInfo, java.util.List<androidx.media.MediaSession2.CommandButton>);
    method public void setOnDataSourceMissingHelper(androidx.media.MediaSession2.OnDataSourceMissingHelper);
    method public void setPlaybackSpeed(float);
    method public void setPlaylist(java.util.List<androidx.media.MediaItem2>, androidx.media.MediaMetadata2);
    method public void setRepeatMode(int);
    method public void setShuffleMode(int);
    method public void skipToNextItem();
    method public void skipToPlaylistItem(androidx.media.MediaItem2);
    method public void skipToPreviousItem();
    method public void updatePlayer(androidx.media.MediaPlayerInterface, androidx.media.MediaPlaylistAgent, androidx.media.VolumeProviderCompat);
    method public void updatePlaylistMetadata(androidx.media.MediaMetadata2);
    field public static final int ERROR_CODE_ACTION_ABORTED = 10; // 0xa
    field public static final int ERROR_CODE_APP_ERROR = 1; // 0x1
    field public static final int ERROR_CODE_AUTHENTICATION_EXPIRED = 3; // 0x3
    field public static final int ERROR_CODE_CONCURRENT_STREAM_LIMIT = 5; // 0x5
    field public static final int ERROR_CODE_CONTENT_ALREADY_PLAYING = 8; // 0x8
    field public static final int ERROR_CODE_END_OF_QUEUE = 11; // 0xb
    field public static final int ERROR_CODE_NOT_AVAILABLE_IN_REGION = 7; // 0x7
    field public static final int ERROR_CODE_NOT_SUPPORTED = 2; // 0x2
    field public static final int ERROR_CODE_PARENTAL_CONTROL_RESTRICTED = 6; // 0x6
    field public static final int ERROR_CODE_PREMIUM_ACCOUNT_REQUIRED = 4; // 0x4
    field public static final int ERROR_CODE_SETUP_REQUIRED = 12; // 0xc
    field public static final int ERROR_CODE_SKIP_LIMIT_REACHED = 9; // 0x9
    field public static final int ERROR_CODE_UNKNOWN_ERROR = 0; // 0x0
  }

  public static final class MediaSession2.Builder {
    ctor public MediaSession2.Builder(android.content.Context);
    method public androidx.media.MediaSession2 build();
    method public androidx.media.MediaSession2.Builder setId(java.lang.String);
    method public androidx.media.MediaSession2.Builder setPlayer(androidx.media.MediaPlayerInterface);
    method public androidx.media.MediaSession2.Builder setPlaylistAgent(androidx.media.MediaPlaylistAgent);
    method public androidx.media.MediaSession2.Builder setSessionActivity(android.app.PendingIntent);
    method public androidx.media.MediaSession2.Builder setSessionCallback(java.util.concurrent.Executor, androidx.media.MediaSession2.SessionCallback);
    method public androidx.media.MediaSession2.Builder setVolumeProvider(androidx.media.VolumeProviderCompat);
  }

  public static final class MediaSession2.CommandButton {
    method public androidx.media.SessionCommand2 getCommand();
    method public java.lang.String getDisplayName();
    method public android.os.Bundle getExtras();
    method public int getIconResId();
    method public boolean isEnabled();
  }

  public static final class MediaSession2.CommandButton.Builder {
    ctor public MediaSession2.CommandButton.Builder();
    method public androidx.media.MediaSession2.CommandButton build();
    method public androidx.media.MediaSession2.CommandButton.Builder setCommand(androidx.media.SessionCommand2);
    method public androidx.media.MediaSession2.CommandButton.Builder setDisplayName(java.lang.String);
    method public androidx.media.MediaSession2.CommandButton.Builder setEnabled(boolean);
    method public androidx.media.MediaSession2.CommandButton.Builder setExtras(android.os.Bundle);
    method public androidx.media.MediaSession2.CommandButton.Builder setIconResId(int);
  }

  public static final class MediaSession2.ControllerInfo {
    method public java.lang.String getPackageName();
    method public int getUid();
  }

  public static abstract interface MediaSession2.OnDataSourceMissingHelper {
    method public abstract androidx.media.DataSourceDesc onDataSourceMissing(androidx.media.MediaSession2, androidx.media.MediaItem2);
  }

  public static abstract class MediaSession2.SessionCallback {
    ctor public MediaSession2.SessionCallback();
    method public void onBufferingStateChanged(androidx.media.MediaSession2, androidx.media.MediaPlayerInterface, androidx.media.MediaItem2, int);
    method public boolean onCommandRequest(androidx.media.MediaSession2, androidx.media.MediaSession2.ControllerInfo, androidx.media.SessionCommand2);
    method public androidx.media.SessionCommandGroup2 onConnect(androidx.media.MediaSession2, androidx.media.MediaSession2.ControllerInfo);
    method public void onCurrentMediaItemChanged(androidx.media.MediaSession2, androidx.media.MediaPlayerInterface, androidx.media.MediaItem2);
    method public void onCustomCommand(androidx.media.MediaSession2, androidx.media.MediaSession2.ControllerInfo, androidx.media.SessionCommand2, android.os.Bundle, android.os.ResultReceiver);
    method public void onDisconnected(androidx.media.MediaSession2, androidx.media.MediaSession2.ControllerInfo);
    method public void onFastForward(androidx.media.MediaSession2, androidx.media.MediaSession2.ControllerInfo);
    method public void onMediaPrepared(androidx.media.MediaSession2, androidx.media.MediaPlayerInterface, androidx.media.MediaItem2);
    method public void onPlayFromMediaId(androidx.media.MediaSession2, androidx.media.MediaSession2.ControllerInfo, java.lang.String, android.os.Bundle);
    method public void onPlayFromSearch(androidx.media.MediaSession2, androidx.media.MediaSession2.ControllerInfo, java.lang.String, android.os.Bundle);
    method public void onPlayFromUri(androidx.media.MediaSession2, androidx.media.MediaSession2.ControllerInfo, android.net.Uri, android.os.Bundle);
    method public void onPlaybackSpeedChanged(androidx.media.MediaSession2, androidx.media.MediaPlayerInterface, float);
    method public void onPlayerStateChanged(androidx.media.MediaSession2, androidx.media.MediaPlayerInterface, int);
    method public void onPlaylistChanged(androidx.media.MediaSession2, androidx.media.MediaPlaylistAgent, java.util.List<androidx.media.MediaItem2>, androidx.media.MediaMetadata2);
    method public void onPlaylistMetadataChanged(androidx.media.MediaSession2, androidx.media.MediaPlaylistAgent, androidx.media.MediaMetadata2);
    method public void onPrepareFromMediaId(androidx.media.MediaSession2, androidx.media.MediaSession2.ControllerInfo, java.lang.String, android.os.Bundle);
    method public void onPrepareFromSearch(androidx.media.MediaSession2, androidx.media.MediaSession2.ControllerInfo, java.lang.String, android.os.Bundle);
    method public void onPrepareFromUri(androidx.media.MediaSession2, androidx.media.MediaSession2.ControllerInfo, android.net.Uri, android.os.Bundle);
    method public void onRepeatModeChanged(androidx.media.MediaSession2, androidx.media.MediaPlaylistAgent, int);
    method public void onRewind(androidx.media.MediaSession2, androidx.media.MediaSession2.ControllerInfo);
    method public void onSeekCompleted(androidx.media.MediaSession2, androidx.media.MediaPlayerInterface, long);
    method public void onSelectRoute(androidx.media.MediaSession2, androidx.media.MediaSession2.ControllerInfo, android.os.Bundle);
    method public void onSetRating(androidx.media.MediaSession2, androidx.media.MediaSession2.ControllerInfo, java.lang.String, androidx.media.Rating2);
    method public void onShuffleModeChanged(androidx.media.MediaSession2, androidx.media.MediaPlaylistAgent, int);
    method public void onSubscribeRoutesInfo(androidx.media.MediaSession2, androidx.media.MediaSession2.ControllerInfo);
    method public void onUnsubscribeRoutesInfo(androidx.media.MediaSession2, androidx.media.MediaSession2.ControllerInfo);
  }

  public final class MediaSessionManager {
    method public static androidx.media.MediaSessionManager getSessionManager(android.content.Context);
    method public boolean isTrustedForMediaControl(androidx.media.MediaSessionManager.RemoteUserInfo);
  }

  public static final class MediaSessionManager.RemoteUserInfo {
    ctor public MediaSessionManager.RemoteUserInfo(java.lang.String, int, int);
    method public java.lang.String getPackageName();
    method public int getPid();
    method public int getUid();
    field public static java.lang.String LEGACY_CONTROLLER;
  }

  public abstract class MediaSessionService2 extends android.app.Service {
    ctor public MediaSessionService2();
    method public final androidx.media.MediaSession2 getSession();
    method public android.os.IBinder onBind(android.content.Intent);
    method public abstract androidx.media.MediaSession2 onCreateSession(java.lang.String);
    method public androidx.media.MediaSessionService2.MediaNotification onUpdateNotification();
    field public static final java.lang.String SERVICE_INTERFACE = "android.media.MediaSessionService2";
    field public static final java.lang.String SERVICE_META_DATA = "android.media.session";
  }

  public static class MediaSessionService2.MediaNotification {
    ctor public MediaSessionService2.MediaNotification(int, android.app.Notification);
    method public android.app.Notification getNotification();
    method public int getNotificationId();
  }

  public final class Rating2 {
    method public static androidx.media.Rating2 fromBundle(android.os.Bundle);
    method public float getPercentRating();
    method public int getRatingStyle();
    method public float getStarRating();
    method public boolean hasHeart();
    method public boolean isRated();
    method public boolean isThumbUp();
    method public static androidx.media.Rating2 newHeartRating(boolean);
    method public static androidx.media.Rating2 newPercentageRating(float);
    method public static androidx.media.Rating2 newStarRating(int, float);
    method public static androidx.media.Rating2 newThumbRating(boolean);
    method public static androidx.media.Rating2 newUnratedRating(int);
    method public android.os.Bundle toBundle();
    field public static final int RATING_3_STARS = 3; // 0x3
    field public static final int RATING_4_STARS = 4; // 0x4
    field public static final int RATING_5_STARS = 5; // 0x5
    field public static final int RATING_HEART = 1; // 0x1
    field public static final int RATING_NONE = 0; // 0x0
    field public static final int RATING_PERCENTAGE = 6; // 0x6
    field public static final int RATING_THUMB_UP_DOWN = 2; // 0x2
  }

  public final class SessionCommand2 {
    ctor public SessionCommand2(int);
    ctor public SessionCommand2(java.lang.String, android.os.Bundle);
    method public int getCommandCode();
    method public java.lang.String getCustomCommand();
    method public android.os.Bundle getExtras();
    field public static final int COMMAND_CODE_CUSTOM = 0; // 0x0
    field public static final int COMMAND_CODE_LIBRARY_GET_CHILDREN = 29; // 0x1d
    field public static final int COMMAND_CODE_LIBRARY_GET_ITEM = 30; // 0x1e
    field public static final int COMMAND_CODE_LIBRARY_GET_LIBRARY_ROOT = 31; // 0x1f
    field public static final int COMMAND_CODE_LIBRARY_GET_SEARCH_RESULT = 32; // 0x20
    field public static final int COMMAND_CODE_LIBRARY_SEARCH = 33; // 0x21
    field public static final int COMMAND_CODE_LIBRARY_SUBSCRIBE = 34; // 0x22
    field public static final int COMMAND_CODE_LIBRARY_UNSUBSCRIBE = 35; // 0x23
    field public static final int COMMAND_CODE_PLAYBACK_PAUSE = 2; // 0x2
    field public static final int COMMAND_CODE_PLAYBACK_PLAY = 1; // 0x1
    field public static final int COMMAND_CODE_PLAYBACK_PREPARE = 6; // 0x6
    field public static final int COMMAND_CODE_PLAYBACK_RESET = 3; // 0x3
    field public static final int COMMAND_CODE_PLAYBACK_SEEK_TO = 9; // 0x9
    field public static final int COMMAND_CODE_PLAYBACK_SET_SPEED = 39; // 0x27
    field public static final int COMMAND_CODE_PLAYLIST_ADD_ITEM = 15; // 0xf
    field public static final int COMMAND_CODE_PLAYLIST_GET_CURRENT_MEDIA_ITEM = 20; // 0x14
    field public static final int COMMAND_CODE_PLAYLIST_GET_LIST = 18; // 0x12
    field public static final int COMMAND_CODE_PLAYLIST_GET_LIST_METADATA = 20; // 0x14
    field public static final int COMMAND_CODE_PLAYLIST_REMOVE_ITEM = 16; // 0x10
    field public static final int COMMAND_CODE_PLAYLIST_REPLACE_ITEM = 17; // 0x11
    field public static final int COMMAND_CODE_PLAYLIST_SET_LIST = 19; // 0x13
    field public static final int COMMAND_CODE_PLAYLIST_SET_LIST_METADATA = 21; // 0x15
    field public static final int COMMAND_CODE_PLAYLIST_SET_REPEAT_MODE = 14; // 0xe
    field public static final int COMMAND_CODE_PLAYLIST_SET_SHUFFLE_MODE = 13; // 0xd
    field public static final int COMMAND_CODE_PLAYLIST_SKIP_TO_NEXT_ITEM = 4; // 0x4
    field public static final int COMMAND_CODE_PLAYLIST_SKIP_TO_PLAYLIST_ITEM = 12; // 0xc
    field public static final int COMMAND_CODE_PLAYLIST_SKIP_TO_PREV_ITEM = 5; // 0x5
    field public static final int COMMAND_CODE_SESSION_FAST_FORWARD = 7; // 0x7
    field public static final int COMMAND_CODE_SESSION_PLAY_FROM_MEDIA_ID = 22; // 0x16
    field public static final int COMMAND_CODE_SESSION_PLAY_FROM_SEARCH = 24; // 0x18
    field public static final int COMMAND_CODE_SESSION_PLAY_FROM_URI = 23; // 0x17
    field public static final int COMMAND_CODE_SESSION_PREPARE_FROM_MEDIA_ID = 25; // 0x19
    field public static final int COMMAND_CODE_SESSION_PREPARE_FROM_SEARCH = 27; // 0x1b
    field public static final int COMMAND_CODE_SESSION_PREPARE_FROM_URI = 26; // 0x1a
    field public static final int COMMAND_CODE_SESSION_REWIND = 8; // 0x8
    field public static final int COMMAND_CODE_SESSION_SELECT_ROUTE = 38; // 0x26
    field public static final int COMMAND_CODE_SESSION_SET_RATING = 28; // 0x1c
    field public static final int COMMAND_CODE_SESSION_SUBSCRIBE_ROUTES_INFO = 36; // 0x24
    field public static final int COMMAND_CODE_SESSION_UNSUBSCRIBE_ROUTES_INFO = 37; // 0x25
    field public static final int COMMAND_CODE_VOLUME_ADJUST_VOLUME = 11; // 0xb
    field public static final int COMMAND_CODE_VOLUME_SET_VOLUME = 10; // 0xa
  }

  public final class SessionCommandGroup2 {
    ctor public SessionCommandGroup2();
    ctor public SessionCommandGroup2(androidx.media.SessionCommandGroup2);
    method public void addAllPredefinedCommands();
    method public void addCommand(androidx.media.SessionCommand2);
    method public void addCommand(int);
    method public java.util.Set<androidx.media.SessionCommand2> getCommands();
    method public boolean hasCommand(androidx.media.SessionCommand2);
    method public boolean hasCommand(int);
    method public void removeCommand(androidx.media.SessionCommand2);
    method public void removeCommand(int);
  }

  public final class SessionToken2 {
    ctor public SessionToken2(android.content.Context, android.content.ComponentName);
    method public static androidx.media.SessionToken2 fromBundle(android.os.Bundle);
    method public java.lang.String getId();
    method public java.lang.String getPackageName();
    method public java.lang.String getServiceName();
    method public int getType();
    method public int getUid();
    method public android.os.Bundle toBundle();
    field public static final int TYPE_LIBRARY_SERVICE = 2; // 0x2
    field public static final int TYPE_SESSION = 0; // 0x0
    field public static final int TYPE_SESSION_SERVICE = 1; // 0x1
  }

  public abstract class VolumeProviderCompat {
    ctor public VolumeProviderCompat(int, int, int);
    method public final int getCurrentVolume();
    method public final int getMaxVolume();
    method public final int getVolumeControl();
    method public java.lang.Object getVolumeProvider();
    method public void onAdjustVolume(int);
    method public void onSetVolumeTo(int);
    method public void setCallback(androidx.media.VolumeProviderCompat.Callback);
    method public final void setCurrentVolume(int);
    field public static final int VOLUME_CONTROL_ABSOLUTE = 2; // 0x2
    field public static final int VOLUME_CONTROL_FIXED = 0; // 0x0
    field public static final int VOLUME_CONTROL_RELATIVE = 1; // 0x1
  }

  public static abstract class VolumeProviderCompat.Callback {
    ctor public VolumeProviderCompat.Callback();
    method public abstract void onVolumeChanged(androidx.media.VolumeProviderCompat);
  }

}

package androidx.media.app {

  public class NotificationCompat {
  }

  public static class NotificationCompat.DecoratedMediaCustomViewStyle extends androidx.media.app.NotificationCompat.MediaStyle {
    ctor public NotificationCompat.DecoratedMediaCustomViewStyle();
  }

  public static class NotificationCompat.MediaStyle extends androidx.core.app.NotificationCompat.Style {
    ctor public NotificationCompat.MediaStyle();
    ctor public NotificationCompat.MediaStyle(androidx.core.app.NotificationCompat.Builder);
    method public static android.support.v4.media.session.MediaSessionCompat.Token getMediaSession(android.app.Notification);
    method public androidx.media.app.NotificationCompat.MediaStyle setCancelButtonIntent(android.app.PendingIntent);
    method public androidx.media.app.NotificationCompat.MediaStyle setMediaSession(android.support.v4.media.session.MediaSessionCompat.Token);
    method public androidx.media.app.NotificationCompat.MediaStyle setShowActionsInCompactView(int...);
    method public androidx.media.app.NotificationCompat.MediaStyle setShowCancelButton(boolean);
  }

}

package androidx.media.session {

  public class MediaButtonReceiver extends android.content.BroadcastReceiver {
    ctor public MediaButtonReceiver();
    method public static android.app.PendingIntent buildMediaButtonPendingIntent(android.content.Context, long);
    method public static android.app.PendingIntent buildMediaButtonPendingIntent(android.content.Context, android.content.ComponentName, long);
    method public static android.view.KeyEvent handleIntent(android.support.v4.media.session.MediaSessionCompat, android.content.Intent);
    method public void onReceive(android.content.Context, android.content.Intent);
  }

}