1// Signature format: 2.0 2package android.media { 3 4 public final class ApplicationMediaCapabilities implements android.os.Parcelable { 5 method @NonNull public static android.media.ApplicationMediaCapabilities createFromXml(@NonNull org.xmlpull.v1.XmlPullParser); 6 method public int describeContents(); 7 method @NonNull public java.util.List<java.lang.String> getSupportedHdrTypes(); 8 method @NonNull public java.util.List<java.lang.String> getSupportedVideoMimeTypes(); 9 method @NonNull public java.util.List<java.lang.String> getUnsupportedHdrTypes(); 10 method @NonNull public java.util.List<java.lang.String> getUnsupportedVideoMimeTypes(); 11 method public boolean isFormatSpecified(@NonNull String); 12 method public boolean isHdrTypeSupported(@NonNull String); 13 method public boolean isVideoMimeTypeSupported(@NonNull String); 14 method public void writeToParcel(@NonNull android.os.Parcel, int); 15 field @NonNull public static final android.os.Parcelable.Creator<android.media.ApplicationMediaCapabilities> CREATOR; 16 } 17 18 public static final class ApplicationMediaCapabilities.Builder { 19 ctor public ApplicationMediaCapabilities.Builder(); 20 method @NonNull public android.media.ApplicationMediaCapabilities.Builder addSupportedHdrType(@NonNull String); 21 method @NonNull public android.media.ApplicationMediaCapabilities.Builder addSupportedVideoMimeType(@NonNull String); 22 method @NonNull public android.media.ApplicationMediaCapabilities.Builder addUnsupportedHdrType(@NonNull String); 23 method @NonNull public android.media.ApplicationMediaCapabilities.Builder addUnsupportedVideoMimeType(@NonNull String); 24 method @NonNull public android.media.ApplicationMediaCapabilities build(); 25 } 26 27 public class MediaCommunicationManager { 28 method @NonNull public java.util.List<android.media.Session2Token> getSession2Tokens(); 29 method @IntRange(from=1) public int getVersion(); 30 } 31 32 public class MediaController2 implements java.lang.AutoCloseable { 33 method public void cancelSessionCommand(@NonNull Object); 34 method public void close(); 35 method @Nullable public android.media.Session2Token getConnectedToken(); 36 method public boolean isPlaybackActive(); 37 method @NonNull public Object sendSessionCommand(@NonNull android.media.Session2Command, @Nullable android.os.Bundle); 38 } 39 40 public static final class MediaController2.Builder { 41 ctor public MediaController2.Builder(@NonNull android.content.Context, @NonNull android.media.Session2Token); 42 method @NonNull public android.media.MediaController2 build(); 43 method @NonNull public android.media.MediaController2.Builder setConnectionHints(@NonNull android.os.Bundle); 44 method @NonNull public android.media.MediaController2.Builder setControllerCallback(@NonNull java.util.concurrent.Executor, @NonNull android.media.MediaController2.ControllerCallback); 45 } 46 47 public abstract static class MediaController2.ControllerCallback { 48 ctor public MediaController2.ControllerCallback(); 49 method public void onCommandResult(@NonNull android.media.MediaController2, @NonNull Object, @NonNull android.media.Session2Command, @NonNull android.media.Session2Command.Result); 50 method public void onConnected(@NonNull android.media.MediaController2, @NonNull android.media.Session2CommandGroup); 51 method public void onDisconnected(@NonNull android.media.MediaController2); 52 method public void onPlaybackActiveChanged(@NonNull android.media.MediaController2, boolean); 53 method @Nullable public android.media.Session2Command.Result onSessionCommand(@NonNull android.media.MediaController2, @NonNull android.media.Session2Command, @Nullable android.os.Bundle); 54 } 55 56 public final class MediaFeature { 57 ctor public MediaFeature(); 58 } 59 60 public static final class MediaFeature.HdrType { 61 field public static final String DOLBY_VISION = "android.media.feature.hdr.dolby_vision"; 62 field public static final String HDR10 = "android.media.feature.hdr.hdr10"; 63 field public static final String HDR10_PLUS = "android.media.feature.hdr.hdr10_plus"; 64 field public static final String HLG = "android.media.feature.hdr.hlg"; 65 } 66 67 public final class MediaParser { 68 method public boolean advance(@NonNull android.media.MediaParser.SeekableInputReader) throws java.io.IOException; 69 method @NonNull public static android.media.MediaParser create(@NonNull android.media.MediaParser.OutputConsumer, @NonNull java.lang.String...); 70 method @NonNull public static android.media.MediaParser createByName(@NonNull String, @NonNull android.media.MediaParser.OutputConsumer); 71 method @NonNull public android.media.metrics.LogSessionId getLogSessionId(); 72 method @NonNull public String getParserName(); 73 method @NonNull public static java.util.List<java.lang.String> getParserNames(@NonNull android.media.MediaFormat); 74 method public void release(); 75 method public void seek(@NonNull android.media.MediaParser.SeekPoint); 76 method public void setLogSessionId(@NonNull android.media.metrics.LogSessionId); 77 method @NonNull public android.media.MediaParser setParameter(@NonNull String, @NonNull Object); 78 method public boolean supportsParameter(@NonNull String); 79 field public static final String PARAMETER_ADTS_ENABLE_CBR_SEEKING = "android.media.mediaparser.adts.enableCbrSeeking"; 80 field public static final String PARAMETER_AMR_ENABLE_CBR_SEEKING = "android.media.mediaparser.amr.enableCbrSeeking"; 81 field public static final String PARAMETER_FLAC_DISABLE_ID3 = "android.media.mediaparser.flac.disableId3"; 82 field public static final String PARAMETER_MATROSKA_DISABLE_CUES_SEEKING = "android.media.mediaparser.matroska.disableCuesSeeking"; 83 field public static final String PARAMETER_MP3_DISABLE_ID3 = "android.media.mediaparser.mp3.disableId3"; 84 field public static final String PARAMETER_MP3_ENABLE_CBR_SEEKING = "android.media.mediaparser.mp3.enableCbrSeeking"; 85 field public static final String PARAMETER_MP3_ENABLE_INDEX_SEEKING = "android.media.mediaparser.mp3.enableIndexSeeking"; 86 field public static final String PARAMETER_MP4_IGNORE_EDIT_LISTS = "android.media.mediaparser.mp4.ignoreEditLists"; 87 field public static final String PARAMETER_MP4_IGNORE_TFDT_BOX = "android.media.mediaparser.mp4.ignoreTfdtBox"; 88 field public static final String PARAMETER_MP4_TREAT_VIDEO_FRAMES_AS_KEYFRAMES = "android.media.mediaparser.mp4.treatVideoFramesAsKeyframes"; 89 field public static final String PARAMETER_TS_ALLOW_NON_IDR_AVC_KEYFRAMES = "android.media.mediaparser.ts.allowNonIdrAvcKeyframes"; 90 field public static final String PARAMETER_TS_DETECT_ACCESS_UNITS = "android.media.mediaparser.ts.ignoreDetectAccessUnits"; 91 field public static final String PARAMETER_TS_ENABLE_HDMV_DTS_AUDIO_STREAMS = "android.media.mediaparser.ts.enableHdmvDtsAudioStreams"; 92 field public static final String PARAMETER_TS_IGNORE_AAC_STREAM = "android.media.mediaparser.ts.ignoreAacStream"; 93 field public static final String PARAMETER_TS_IGNORE_AVC_STREAM = "android.media.mediaparser.ts.ignoreAvcStream"; 94 field public static final String PARAMETER_TS_IGNORE_SPLICE_INFO_STREAM = "android.media.mediaparser.ts.ignoreSpliceInfoStream"; 95 field public static final String PARAMETER_TS_MODE = "android.media.mediaparser.ts.mode"; 96 field public static final String PARSER_NAME_AC3 = "android.media.mediaparser.Ac3Parser"; 97 field public static final String PARSER_NAME_AC4 = "android.media.mediaparser.Ac4Parser"; 98 field public static final String PARSER_NAME_ADTS = "android.media.mediaparser.AdtsParser"; 99 field public static final String PARSER_NAME_AMR = "android.media.mediaparser.AmrParser"; 100 field public static final String PARSER_NAME_FLAC = "android.media.mediaparser.FlacParser"; 101 field public static final String PARSER_NAME_FLV = "android.media.mediaparser.FlvParser"; 102 field public static final String PARSER_NAME_FMP4 = "android.media.mediaparser.FragmentedMp4Parser"; 103 field public static final String PARSER_NAME_MATROSKA = "android.media.mediaparser.MatroskaParser"; 104 field public static final String PARSER_NAME_MP3 = "android.media.mediaparser.Mp3Parser"; 105 field public static final String PARSER_NAME_MP4 = "android.media.mediaparser.Mp4Parser"; 106 field public static final String PARSER_NAME_OGG = "android.media.mediaparser.OggParser"; 107 field public static final String PARSER_NAME_PS = "android.media.mediaparser.PsParser"; 108 field public static final String PARSER_NAME_TS = "android.media.mediaparser.TsParser"; 109 field public static final String PARSER_NAME_UNKNOWN = "android.media.mediaparser.UNKNOWN"; 110 field public static final String PARSER_NAME_WAV = "android.media.mediaparser.WavParser"; 111 field public static final int SAMPLE_FLAG_DECODE_ONLY = -2147483648; // 0x80000000 112 field public static final int SAMPLE_FLAG_ENCRYPTED = 1073741824; // 0x40000000 113 field public static final int SAMPLE_FLAG_HAS_SUPPLEMENTAL_DATA = 268435456; // 0x10000000 114 field public static final int SAMPLE_FLAG_KEY_FRAME = 1; // 0x1 115 field public static final int SAMPLE_FLAG_LAST_SAMPLE = 536870912; // 0x20000000 116 } 117 118 public static interface MediaParser.InputReader { 119 method public long getLength(); 120 method public long getPosition(); 121 method public int read(@NonNull byte[], int, int) throws java.io.IOException; 122 } 123 124 public static interface MediaParser.OutputConsumer { 125 method public void onSampleCompleted(int, long, int, int, int, @Nullable android.media.MediaCodec.CryptoInfo); 126 method public void onSampleDataFound(int, @NonNull android.media.MediaParser.InputReader) throws java.io.IOException; 127 method public void onSeekMapFound(@NonNull android.media.MediaParser.SeekMap); 128 method public void onTrackCountFound(int); 129 method public void onTrackDataFound(int, @NonNull android.media.MediaParser.TrackData); 130 } 131 132 public static final class MediaParser.ParsingException extends java.io.IOException { 133 } 134 135 public static final class MediaParser.SeekMap { 136 method public long getDurationMicros(); 137 method @NonNull public android.util.Pair<android.media.MediaParser.SeekPoint,android.media.MediaParser.SeekPoint> getSeekPoints(long); 138 method public boolean isSeekable(); 139 field public static final int UNKNOWN_DURATION = -2147483648; // 0x80000000 140 } 141 142 public static final class MediaParser.SeekPoint { 143 field @NonNull public static final android.media.MediaParser.SeekPoint START; 144 field public final long position; 145 field public final long timeMicros; 146 } 147 148 public static interface MediaParser.SeekableInputReader extends android.media.MediaParser.InputReader { 149 method public void seekToPosition(long); 150 } 151 152 public static final class MediaParser.TrackData { 153 field @Nullable public final android.media.DrmInitData drmInitData; 154 field @NonNull public final android.media.MediaFormat mediaFormat; 155 } 156 157 public static final class MediaParser.UnrecognizedInputFormatException extends java.io.IOException { 158 } 159 160 public class MediaSession2 implements java.lang.AutoCloseable { 161 method public void broadcastSessionCommand(@NonNull android.media.Session2Command, @Nullable android.os.Bundle); 162 method public void cancelSessionCommand(@NonNull android.media.MediaSession2.ControllerInfo, @NonNull Object); 163 method public void close(); 164 method @NonNull public java.util.List<android.media.MediaSession2.ControllerInfo> getConnectedControllers(); 165 method @NonNull public String getId(); 166 method @NonNull public android.media.Session2Token getToken(); 167 method public boolean isPlaybackActive(); 168 method @NonNull public Object sendSessionCommand(@NonNull android.media.MediaSession2.ControllerInfo, @NonNull android.media.Session2Command, @Nullable android.os.Bundle); 169 method public void setPlaybackActive(boolean); 170 } 171 172 public static final class MediaSession2.Builder { 173 ctor public MediaSession2.Builder(@NonNull android.content.Context); 174 method @NonNull public android.media.MediaSession2 build(); 175 method @NonNull public android.media.MediaSession2.Builder setExtras(@NonNull android.os.Bundle); 176 method @NonNull public android.media.MediaSession2.Builder setId(@NonNull String); 177 method @NonNull public android.media.MediaSession2.Builder setSessionActivity(@Nullable android.app.PendingIntent); 178 method @NonNull public android.media.MediaSession2.Builder setSessionCallback(@NonNull java.util.concurrent.Executor, @NonNull android.media.MediaSession2.SessionCallback); 179 } 180 181 public static final class MediaSession2.ControllerInfo { 182 method @NonNull public android.os.Bundle getConnectionHints(); 183 method @NonNull public String getPackageName(); 184 method @NonNull public android.media.session.MediaSessionManager.RemoteUserInfo getRemoteUserInfo(); 185 method public int getUid(); 186 } 187 188 public abstract static class MediaSession2.SessionCallback { 189 ctor public MediaSession2.SessionCallback(); 190 method public void onCommandResult(@NonNull android.media.MediaSession2, @NonNull android.media.MediaSession2.ControllerInfo, @NonNull Object, @NonNull android.media.Session2Command, @NonNull android.media.Session2Command.Result); 191 method @Nullable public android.media.Session2CommandGroup onConnect(@NonNull android.media.MediaSession2, @NonNull android.media.MediaSession2.ControllerInfo); 192 method public void onDisconnected(@NonNull android.media.MediaSession2, @NonNull android.media.MediaSession2.ControllerInfo); 193 method public void onPostConnect(@NonNull android.media.MediaSession2, @NonNull android.media.MediaSession2.ControllerInfo); 194 method @Nullable public android.media.Session2Command.Result onSessionCommand(@NonNull android.media.MediaSession2, @NonNull android.media.MediaSession2.ControllerInfo, @NonNull android.media.Session2Command, @Nullable android.os.Bundle); 195 } 196 197 public abstract class MediaSession2Service extends android.app.Service { 198 ctor public MediaSession2Service(); 199 method public final void addSession(@NonNull android.media.MediaSession2); 200 method @NonNull public final java.util.List<android.media.MediaSession2> getSessions(); 201 method @CallSuper @Nullable public android.os.IBinder onBind(@NonNull android.content.Intent); 202 method @Nullable public abstract android.media.MediaSession2 onGetSession(@NonNull android.media.MediaSession2.ControllerInfo); 203 method @Nullable public abstract android.media.MediaSession2Service.MediaNotification onUpdateNotification(@NonNull android.media.MediaSession2); 204 method public final void removeSession(@NonNull android.media.MediaSession2); 205 field public static final String SERVICE_INTERFACE = "android.media.MediaSession2Service"; 206 } 207 208 public static class MediaSession2Service.MediaNotification { 209 ctor public MediaSession2Service.MediaNotification(int, @NonNull android.app.Notification); 210 method @NonNull public android.app.Notification getNotification(); 211 method public int getNotificationId(); 212 } 213 214 public final class Session2Command implements android.os.Parcelable { 215 ctor public Session2Command(int); 216 ctor public Session2Command(@NonNull String, @Nullable android.os.Bundle); 217 method public int describeContents(); 218 method public int getCommandCode(); 219 method @Nullable public String getCustomAction(); 220 method @Nullable public android.os.Bundle getCustomExtras(); 221 method public void writeToParcel(@NonNull android.os.Parcel, int); 222 field public static final int COMMAND_CODE_CUSTOM = 0; // 0x0 223 field @NonNull public static final android.os.Parcelable.Creator<android.media.Session2Command> CREATOR; 224 } 225 226 public static final class Session2Command.Result { 227 ctor public Session2Command.Result(int, @Nullable android.os.Bundle); 228 method public int getResultCode(); 229 method @Nullable public android.os.Bundle getResultData(); 230 field public static final int RESULT_ERROR_UNKNOWN_ERROR = -1; // 0xffffffff 231 field public static final int RESULT_INFO_SKIPPED = 1; // 0x1 232 field public static final int RESULT_SUCCESS = 0; // 0x0 233 } 234 235 public final class Session2CommandGroup implements android.os.Parcelable { 236 method public int describeContents(); 237 method @NonNull public java.util.Set<android.media.Session2Command> getCommands(); 238 method public boolean hasCommand(@NonNull android.media.Session2Command); 239 method public boolean hasCommand(int); 240 method public void writeToParcel(@NonNull android.os.Parcel, int); 241 field @NonNull public static final android.os.Parcelable.Creator<android.media.Session2CommandGroup> CREATOR; 242 } 243 244 public static final class Session2CommandGroup.Builder { 245 ctor public Session2CommandGroup.Builder(); 246 ctor public Session2CommandGroup.Builder(@NonNull android.media.Session2CommandGroup); 247 method @NonNull public android.media.Session2CommandGroup.Builder addCommand(@NonNull android.media.Session2Command); 248 method @NonNull public android.media.Session2CommandGroup build(); 249 method @NonNull public android.media.Session2CommandGroup.Builder removeCommand(@NonNull android.media.Session2Command); 250 } 251 252 public final class Session2Token implements android.os.Parcelable { 253 ctor public Session2Token(@NonNull android.content.Context, @NonNull android.content.ComponentName); 254 method public int describeContents(); 255 method @NonNull public android.os.Bundle getExtras(); 256 method @NonNull public String getPackageName(); 257 method @Nullable public String getServiceName(); 258 method public int getType(); 259 method public int getUid(); 260 method public void writeToParcel(android.os.Parcel, int); 261 field @NonNull public static final android.os.Parcelable.Creator<android.media.Session2Token> CREATOR; 262 field public static final int TYPE_SESSION = 0; // 0x0 263 field public static final int TYPE_SESSION_SERVICE = 1; // 0x1 264 } 265 266} 267 268