Loading packages/MediaComponents/src/com/android/media/MediaController2Impl.java +9 −12 Original line number Original line Diff line number Diff line Loading @@ -1062,7 +1062,6 @@ public class MediaController2Impl implements MediaController2Provider { private static final String KEY_AUDIO_ATTRIBUTES = private static final String KEY_AUDIO_ATTRIBUTES = "android.media.playbackinfo_impl.audio_attrs"; "android.media.playbackinfo_impl.audio_attrs"; private final Context mContext; private final PlaybackInfo mInstance; private final PlaybackInfo mInstance; private final int mPlaybackType; private final int mPlaybackType; Loading @@ -1071,9 +1070,8 @@ public class MediaController2Impl implements MediaController2Provider { private final int mCurrentVolume; private final int mCurrentVolume; private final AudioAttributes mAudioAttrs; private final AudioAttributes mAudioAttrs; private PlaybackInfoImpl(Context context, int playbackType, AudioAttributes attrs, private PlaybackInfoImpl(int playbackType, AudioAttributes attrs, int controlType, int controlType, int max, int current) { int max, int current) { mContext = context; mPlaybackType = playbackType; mPlaybackType = playbackType; mAudioAttrs = attrs; mAudioAttrs = attrs; mControlType = controlType; mControlType = controlType; Loading Loading @@ -1107,11 +1105,11 @@ public class MediaController2Impl implements MediaController2Provider { return mCurrentVolume; return mCurrentVolume; } } public PlaybackInfo getInstance() { PlaybackInfo getInstance() { return mInstance; return mInstance; } } public Bundle toBundle() { Bundle toBundle() { Bundle bundle = new Bundle(); Bundle bundle = new Bundle(); bundle.putInt(KEY_PLAYBACK_TYPE, mPlaybackType); bundle.putInt(KEY_PLAYBACK_TYPE, mPlaybackType); bundle.putInt(KEY_CONTROL_TYPE, mControlType); bundle.putInt(KEY_CONTROL_TYPE, mControlType); Loading @@ -1121,13 +1119,13 @@ public class MediaController2Impl implements MediaController2Provider { return bundle; return bundle; } } public static PlaybackInfo createPlaybackInfo(Context context, int playbackType, static PlaybackInfo createPlaybackInfo(int playbackType, AudioAttributes attrs, AudioAttributes attrs, int controlType, int max, int current) { int controlType, int max, int current) { return new PlaybackInfoImpl(context, playbackType, attrs, controlType, max, current) return new PlaybackInfoImpl(playbackType, attrs, controlType, max, current) .getInstance(); .getInstance(); } } public static PlaybackInfo fromBundle(Context context, Bundle bundle) { static PlaybackInfo fromBundle(Bundle bundle) { if (bundle == null) { if (bundle == null) { return null; return null; } } Loading @@ -1137,8 +1135,7 @@ public class MediaController2Impl implements MediaController2Provider { final int currentVolume = bundle.getInt(KEY_CURRENT_VOLUME); final int currentVolume = bundle.getInt(KEY_CURRENT_VOLUME); final AudioAttributes attrs = bundle.getParcelable(KEY_AUDIO_ATTRIBUTES); final AudioAttributes attrs = bundle.getParcelable(KEY_AUDIO_ATTRIBUTES); return createPlaybackInfo( return createPlaybackInfo(volumeType, attrs, volumeControl, maxVolume, currentVolume); context, volumeType, attrs, volumeControl, maxVolume, currentVolume); } } } } } } packages/MediaComponents/src/com/android/media/MediaController2Stub.java +14 −20 Original line number Original line Diff line number Diff line Loading @@ -141,15 +141,14 @@ public class MediaController2Stub extends IMediaController2.Stub { } } List<MediaItem2> playlist = new ArrayList<>(); List<MediaItem2> playlist = new ArrayList<>(); for (Bundle bundle : playlistBundle) { for (Bundle bundle : playlistBundle) { MediaItem2 item = MediaItem2.fromBundle(controller.getContext(), bundle); MediaItem2 item = MediaItem2.fromBundle(bundle); if (item == null) { if (item == null) { Log.w(TAG, "onPlaylistChanged(): Ignoring null item in playlist"); Log.w(TAG, "onPlaylistChanged(): Ignoring null item in playlist"); } else { } else { playlist.add(item); playlist.add(item); } } } } MediaMetadata2 metadata = MediaMetadata2 metadata = MediaMetadata2.fromBundle(metadataBundle); MediaMetadata2.fromBundle(controller.getContext(), metadataBundle); controller.pushPlaylistChanges(playlist, metadata); controller.pushPlaylistChanges(playlist, metadata); } } Loading @@ -162,8 +161,7 @@ public class MediaController2Stub extends IMediaController2.Stub { Log.w(TAG, "Don't fail silently here. Highly likely a bug"); Log.w(TAG, "Don't fail silently here. Highly likely a bug"); return; return; } } MediaMetadata2 metadata = MediaMetadata2 metadata = MediaMetadata2.fromBundle(metadataBundle); MediaMetadata2.fromBundle(controller.getContext(), metadataBundle); controller.pushPlaylistMetadataChanges(metadata); controller.pushPlaylistMetadataChanges(metadata); } } Loading Loading @@ -191,14 +189,12 @@ public class MediaController2Stub extends IMediaController2.Stub { Log.w(TAG, "Don't fail silently here. Highly likely a bug"); Log.w(TAG, "Don't fail silently here. Highly likely a bug"); return; return; } } MediaController2.PlaybackInfo info = MediaController2.PlaybackInfo info = PlaybackInfoImpl.fromBundle(playbackInfo); PlaybackInfoImpl.fromBundle(controller.getContext(), playbackInfo); if (info == null) { if (info == null) { Log.w(TAG, "onPlaybackInfoChanged(): Ignoring null playbackInfo"); Log.w(TAG, "onPlaybackInfoChanged(): Ignoring null playbackInfo"); return; return; } } controller.pushPlaybackInfoChanges( controller.pushPlaybackInfoChanges(info); PlaybackInfoImpl.fromBundle(controller.getContext(), playbackInfo)); } } @Override @Override Loading Loading @@ -242,16 +238,16 @@ public class MediaController2Stub extends IMediaController2.Stub { if (itemBundleList != null) { if (itemBundleList != null) { itemList = new ArrayList<>(); itemList = new ArrayList<>(); for (int i = 0; i < itemBundleList.size(); i++) { for (int i = 0; i < itemBundleList.size(); i++) { MediaItem2 item = MediaItem2.fromBundle(context, itemBundleList.get(i)); MediaItem2 item = MediaItem2.fromBundle(itemBundleList.get(i)); if (item != null) { if (item != null) { itemList.add(item); itemList.add(item); } } } } } } controller.onConnectedNotLocked(sessionBinder, controller.onConnectedNotLocked(sessionBinder, CommandGroup.fromBundle(context, commandGroup), CommandGroup.fromBundle(commandGroup), playerState, positionEventTimeMs, positionMs, playbackSpeed, bufferedPositionMs, playerState, positionEventTimeMs, positionMs, playbackSpeed, bufferedPositionMs, PlaybackInfoImpl.fromBundle(context, playbackInfo), repeatMode, shuffleMode, PlaybackInfoImpl.fromBundle(playbackInfo), repeatMode, shuffleMode, itemList, sessionActivity); itemList, sessionActivity); } } Loading Loading @@ -286,8 +282,7 @@ public class MediaController2Stub extends IMediaController2.Stub { } } List<CommandButton> layout = new ArrayList<>(); List<CommandButton> layout = new ArrayList<>(); for (int i = 0; i < commandButtonlist.size(); i++) { for (int i = 0; i < commandButtonlist.size(); i++) { CommandButton button = CommandButtonImpl.fromBundle( CommandButton button = CommandButtonImpl.fromBundle(commandButtonlist.get(i)); controller.getContext(), commandButtonlist.get(i)); if (button != null) { if (button != null) { layout.add(button); layout.add(button); } } Loading @@ -308,7 +303,7 @@ public class MediaController2Stub extends IMediaController2.Stub { // TODO(jaewan): Revisit here. Could be a bug // TODO(jaewan): Revisit here. Could be a bug return; return; } } CommandGroup commands = CommandGroup.fromBundle(controller.getContext(), commandsBundle); CommandGroup commands = CommandGroup.fromBundle(commandsBundle); if (commands == null) { if (commands == null) { Log.w(TAG, "onAllowedCommandsChanged(): Ignoring null commands"); Log.w(TAG, "onAllowedCommandsChanged(): Ignoring null commands"); return; return; Loading @@ -325,7 +320,7 @@ public class MediaController2Stub extends IMediaController2.Stub { Log.w(TAG, "Don't fail silently here. Highly likely a bug"); Log.w(TAG, "Don't fail silently here. Highly likely a bug"); return; return; } } Command command = Command.fromBundle(controller.getContext(), commandBundle); Command command = Command.fromBundle(commandBundle); if (command == null) { if (command == null) { Log.w(TAG, "onCustomCommand(): Ignoring null command"); Log.w(TAG, "onCustomCommand(): Ignoring null command"); return; return; Loading Loading @@ -371,8 +366,7 @@ public class MediaController2Stub extends IMediaController2.Stub { // TODO(jaewan): Revisit here. Could be a bug // TODO(jaewan): Revisit here. Could be a bug return; return; } } browser.onGetItemDone(mediaId, browser.onGetItemDone(mediaId, MediaItem2.fromBundle(itemBundle)); MediaItem2Impl.fromBundle(browser.getContext(), itemBundle)); } } @Override @Override Loading @@ -398,7 +392,7 @@ public class MediaController2Stub extends IMediaController2.Stub { if (itemBundleList != null) { if (itemBundleList != null) { result = new ArrayList<>(); result = new ArrayList<>(); for (Bundle bundle : itemBundleList) { for (Bundle bundle : itemBundleList) { result.add(MediaItem2.fromBundle(browser.getContext(), bundle)); result.add(MediaItem2.fromBundle(bundle)); } } } } browser.onGetChildrenDone(parentId, page, pageSize, result, extras); browser.onGetChildrenDone(parentId, page, pageSize, result, extras); Loading Loading @@ -448,7 +442,7 @@ public class MediaController2Stub extends IMediaController2.Stub { if (itemBundleList != null) { if (itemBundleList != null) { result = new ArrayList<>(); result = new ArrayList<>(); for (Bundle bundle : itemBundleList) { for (Bundle bundle : itemBundleList) { result.add(MediaItem2.fromBundle(browser.getContext(), bundle)); result.add(MediaItem2.fromBundle(bundle)); } } } } browser.onGetSearchResultDone(query, page, pageSize, result, extras); browser.onGetSearchResultDone(query, page, pageSize, result, extras); Loading packages/MediaComponents/src/com/android/media/MediaItem2Impl.java +12 −23 Original line number Original line Diff line number Diff line Loading @@ -21,7 +21,6 @@ import static android.media.MediaItem2.FLAG_PLAYABLE; import android.annotation.NonNull; import android.annotation.NonNull; import android.annotation.Nullable; import android.annotation.Nullable; import android.content.Context; import android.media.DataSourceDesc; import android.media.DataSourceDesc; import android.media.MediaItem2; import android.media.MediaItem2; import android.media.MediaItem2.Builder; import android.media.MediaItem2.Builder; Loading @@ -39,7 +38,6 @@ public class MediaItem2Impl implements MediaItem2Provider { private static final String KEY_METADATA = "android.media.mediaitem2.metadata"; private static final String KEY_METADATA = "android.media.mediaitem2.metadata"; private static final String KEY_UUID = "android.media.mediaitem2.uuid"; private static final String KEY_UUID = "android.media.mediaitem2.uuid"; private final Context mContext; private final MediaItem2 mInstance; private final MediaItem2 mInstance; private final String mId; private final String mId; private final int mFlags; private final int mFlags; Loading @@ -48,14 +46,13 @@ public class MediaItem2Impl implements MediaItem2Provider { private DataSourceDesc mDataSourceDesc; private DataSourceDesc mDataSourceDesc; // From the public API // From the public API public MediaItem2Impl(@NonNull Context context, @NonNull String mediaId, public MediaItem2Impl(@NonNull String mediaId, @Nullable DataSourceDesc dsd, @Nullable DataSourceDesc dsd, @Nullable MediaMetadata2 metadata, @Flags int flags) { @Nullable MediaMetadata2 metadata, @Flags int flags) { this(context, mediaId, dsd, metadata, flags, null); this(mediaId, dsd, metadata, flags, null); } } private MediaItem2Impl(@NonNull Context context, @NonNull String mediaId, private MediaItem2Impl(@NonNull String mediaId, @Nullable DataSourceDesc dsd, @Nullable DataSourceDesc dsd, @Nullable MediaMetadata2 metadata, @Flags int flags, @Nullable MediaMetadata2 metadata, @Flags int flags, @Nullable UUID uuid) { @Nullable UUID uuid) { if (mediaId == null) { if (mediaId == null) { throw new IllegalArgumentException("mediaId shouldn't be null"); throw new IllegalArgumentException("mediaId shouldn't be null"); } } Loading @@ -63,7 +60,6 @@ public class MediaItem2Impl implements MediaItem2Provider { throw new IllegalArgumentException("metadata's id should be matched with the mediaid"); throw new IllegalArgumentException("metadata's id should be matched with the mediaid"); } } mContext = context; mId = mediaId; mId = mediaId; mDataSourceDesc = dsd; mDataSourceDesc = dsd; mMetadata = metadata; mMetadata = metadata; Loading Loading @@ -101,16 +97,15 @@ public class MediaItem2Impl implements MediaItem2Provider { /** /** * Create a MediaItem2 from the {@link Bundle}. * Create a MediaItem2 from the {@link Bundle}. * * * @param context A context. * @param bundle The bundle which was published by {@link MediaItem2#toBundle()}. * @param bundle The bundle which was published by {@link MediaItem2#toBundle()}. * @return The newly created MediaItem2 * @return The newly created MediaItem2 */ */ public static MediaItem2 fromBundle(@NonNull Context context, @NonNull Bundle bundle) { public static MediaItem2 fromBundle_impl(@NonNull Bundle bundle) { if (bundle == null) { if (bundle == null) { return null; return null; } } final String uuidString = bundle.getString(KEY_UUID); final String uuidString = bundle.getString(KEY_UUID); return fromBundle(context, bundle, UUID.fromString(uuidString)); return fromBundle(bundle, UUID.fromString(uuidString)); } } /** /** Loading @@ -118,22 +113,19 @@ public class MediaItem2Impl implements MediaItem2Provider { * If {@link UUID} * If {@link UUID} * can be null for creating new. * can be null for creating new. * * * @param context A context. * @param bundle The bundle which was published by {@link MediaItem2#toBundle()}. * @param bundle The bundle which was published by {@link MediaItem2#toBundle()}. * @param uuid A {@link UUID} to override. Can be {@link null} for override. * @param uuid A {@link UUID} to override. Can be {@link null} for override. * @return The newly created MediaItem2 * @return The newly created MediaItem2 */ */ static MediaItem2 fromBundle(@NonNull Context context, @NonNull Bundle bundle, static MediaItem2 fromBundle(@NonNull Bundle bundle, @Nullable UUID uuid) { @Nullable UUID uuid) { if (bundle == null) { if (bundle == null) { return null; return null; } } final String id = bundle.getString(KEY_ID); final String id = bundle.getString(KEY_ID); final Bundle metadataBundle = bundle.getBundle(KEY_METADATA); final Bundle metadataBundle = bundle.getBundle(KEY_METADATA); final MediaMetadata2 metadata = metadataBundle != null final MediaMetadata2 metadata = MediaMetadata2.fromBundle(metadataBundle); ? MediaMetadata2.fromBundle(context, metadataBundle) : null; final int flags = bundle.getInt(KEY_FLAGS); final int flags = bundle.getInt(KEY_FLAGS); return new MediaItem2Impl(context, id, null, metadata, flags, uuid).getInstance(); return new MediaItem2Impl(id, null, metadata, flags, uuid).getInstance(); } } private MediaItem2 getInstance() { private MediaItem2 getInstance() { Loading Loading @@ -188,15 +180,13 @@ public class MediaItem2Impl implements MediaItem2Provider { } } public static class BuilderImpl implements MediaItem2Provider.BuilderProvider { public static class BuilderImpl implements MediaItem2Provider.BuilderProvider { private Context mContext; private Builder mInstance; private Builder mInstance; private @Flags int mFlags; private @Flags int mFlags; private String mMediaId; private String mMediaId; private MediaMetadata2 mMetadata; private MediaMetadata2 mMetadata; private DataSourceDesc mDataSourceDesc; private DataSourceDesc mDataSourceDesc; public BuilderImpl(Context context, Builder instance, int flags) { public BuilderImpl(Builder instance, int flags) { mContext = context; mInstance = instance; mInstance = instance; mFlags = flags; mFlags = flags; } } Loading Loading @@ -227,8 +217,7 @@ public class MediaItem2Impl implements MediaItem2Provider { // TODO(jaewan): Double check if its sufficient (e.g. Use UUID instead?) // TODO(jaewan): Double check if its sufficient (e.g. Use UUID instead?) id = (mMediaId != null) ? mMediaId : toString(); id = (mMediaId != null) ? mMediaId : toString(); } } return new MediaItem2Impl(mContext, id, mDataSourceDesc, mMetadata, mFlags) return new MediaItem2Impl(id, mDataSourceDesc, mMetadata, mFlags).getInstance(); .getInstance(); } } } } } } packages/MediaComponents/src/com/android/media/MediaLibraryService2Impl.java +1 −2 Original line number Original line Diff line number Diff line Loading @@ -151,8 +151,7 @@ public class MediaLibraryService2Impl extends MediaSessionService2Impl implement private final String mRootId; private final String mRootId; private final Bundle mExtras; private final Bundle mExtras; public LibraryRootImpl(Context context, LibraryRoot instance, String rootId, public LibraryRootImpl(LibraryRoot instance, String rootId, Bundle extras) { Bundle extras) { if (rootId == null) { if (rootId == null) { throw new IllegalArgumentException("rootId shouldn't be null."); throw new IllegalArgumentException("rootId shouldn't be null."); } } Loading packages/MediaComponents/src/com/android/media/MediaMetadata2Impl.java +8 −16 Original line number Original line Diff line number Diff line Loading @@ -19,7 +19,6 @@ package com.android.media; import static android.media.MediaMetadata2.*; import static android.media.MediaMetadata2.*; import android.annotation.Nullable; import android.annotation.Nullable; import android.content.Context; import android.graphics.Bitmap; import android.graphics.Bitmap; import android.media.MediaMetadata2; import android.media.MediaMetadata2; import android.media.MediaMetadata2.BitmapKey; import android.media.MediaMetadata2.BitmapKey; Loading Loading @@ -105,12 +104,10 @@ public class MediaMetadata2Impl implements MediaMetadata2Provider { METADATA_KEY_ALBUM_ART_URI METADATA_KEY_ALBUM_ART_URI }; }; private final Context mContext; private final MediaMetadata2 mInstance; private final MediaMetadata2 mInstance; private final Bundle mBundle; private final Bundle mBundle; public MediaMetadata2Impl(Context context, Bundle bundle) { public MediaMetadata2Impl(Bundle bundle) { mContext = context; mInstance = new MediaMetadata2(this); mInstance = new MediaMetadata2(this); mBundle = bundle; mBundle = bundle; } } Loading Loading @@ -168,7 +165,7 @@ public class MediaMetadata2Impl implements MediaMetadata2Provider { // TODO(jaewan): Add backward compatibility // TODO(jaewan): Add backward compatibility Rating2 rating = null; Rating2 rating = null; try { try { rating = Rating2.fromBundle(mContext, mBundle.getBundle(key)); rating = Rating2.fromBundle(mBundle.getBundle(key)); } catch (Exception e) { } catch (Exception e) { // ignore, value was not a rating // ignore, value was not a rating Log.w(TAG, "Failed to retrieve a key as Rating.", e); Log.w(TAG, "Failed to retrieve a key as Rating.", e); Loading Loading @@ -225,33 +222,28 @@ public class MediaMetadata2Impl implements MediaMetadata2Provider { return mBundle; return mBundle; } } public static MediaMetadata2 fromBundle(Context context, Bundle bundle) { public static MediaMetadata2 fromBundle_impl(Bundle bundle) { return (bundle == null) ? null : new MediaMetadata2Impl(context, bundle).getInstance(); return (bundle == null) ? null : new MediaMetadata2Impl(bundle).getInstance(); } } public static final class BuilderImpl implements MediaMetadata2Provider.BuilderProvider { public static final class BuilderImpl implements MediaMetadata2Provider.BuilderProvider { private final Context mContext; private final MediaMetadata2.Builder mInstance; private final MediaMetadata2.Builder mInstance; private final Bundle mBundle; private final Bundle mBundle; public BuilderImpl(Context context, MediaMetadata2.Builder instance) { public BuilderImpl(MediaMetadata2.Builder instance) { mContext = context; mInstance = instance; mInstance = instance; mBundle = new Bundle(); mBundle = new Bundle(); } } public BuilderImpl(Context context, MediaMetadata2.Builder instance, public BuilderImpl(MediaMetadata2.Builder instance, MediaMetadata2 source) { MediaMetadata2 source) { if (source == null) { if (source == null) { throw new IllegalArgumentException("source shouldn't be null"); throw new IllegalArgumentException("source shouldn't be null"); } } mContext = context; mInstance = instance; mInstance = instance; mBundle = new Bundle(source.toBundle()); mBundle = new Bundle(source.toBundle()); } } public BuilderImpl(Context context, int maxBitmapSize) { public BuilderImpl(int maxBitmapSize) { mContext = context; mInstance = new MediaMetadata2.Builder(this); mInstance = new MediaMetadata2.Builder(this); mBundle = new Bundle(); mBundle = new Bundle(); Loading Loading @@ -364,7 +356,7 @@ public class MediaMetadata2Impl implements MediaMetadata2Provider { @Override @Override public MediaMetadata2 build_impl() { public MediaMetadata2 build_impl() { return new MediaMetadata2Impl(mContext, mBundle).getInstance(); return new MediaMetadata2Impl(mBundle).getInstance(); } } private Bitmap scaleBitmap(Bitmap bmp, int maxSize) { private Bitmap scaleBitmap(Bitmap bmp, int maxSize) { Loading Loading
packages/MediaComponents/src/com/android/media/MediaController2Impl.java +9 −12 Original line number Original line Diff line number Diff line Loading @@ -1062,7 +1062,6 @@ public class MediaController2Impl implements MediaController2Provider { private static final String KEY_AUDIO_ATTRIBUTES = private static final String KEY_AUDIO_ATTRIBUTES = "android.media.playbackinfo_impl.audio_attrs"; "android.media.playbackinfo_impl.audio_attrs"; private final Context mContext; private final PlaybackInfo mInstance; private final PlaybackInfo mInstance; private final int mPlaybackType; private final int mPlaybackType; Loading @@ -1071,9 +1070,8 @@ public class MediaController2Impl implements MediaController2Provider { private final int mCurrentVolume; private final int mCurrentVolume; private final AudioAttributes mAudioAttrs; private final AudioAttributes mAudioAttrs; private PlaybackInfoImpl(Context context, int playbackType, AudioAttributes attrs, private PlaybackInfoImpl(int playbackType, AudioAttributes attrs, int controlType, int controlType, int max, int current) { int max, int current) { mContext = context; mPlaybackType = playbackType; mPlaybackType = playbackType; mAudioAttrs = attrs; mAudioAttrs = attrs; mControlType = controlType; mControlType = controlType; Loading Loading @@ -1107,11 +1105,11 @@ public class MediaController2Impl implements MediaController2Provider { return mCurrentVolume; return mCurrentVolume; } } public PlaybackInfo getInstance() { PlaybackInfo getInstance() { return mInstance; return mInstance; } } public Bundle toBundle() { Bundle toBundle() { Bundle bundle = new Bundle(); Bundle bundle = new Bundle(); bundle.putInt(KEY_PLAYBACK_TYPE, mPlaybackType); bundle.putInt(KEY_PLAYBACK_TYPE, mPlaybackType); bundle.putInt(KEY_CONTROL_TYPE, mControlType); bundle.putInt(KEY_CONTROL_TYPE, mControlType); Loading @@ -1121,13 +1119,13 @@ public class MediaController2Impl implements MediaController2Provider { return bundle; return bundle; } } public static PlaybackInfo createPlaybackInfo(Context context, int playbackType, static PlaybackInfo createPlaybackInfo(int playbackType, AudioAttributes attrs, AudioAttributes attrs, int controlType, int max, int current) { int controlType, int max, int current) { return new PlaybackInfoImpl(context, playbackType, attrs, controlType, max, current) return new PlaybackInfoImpl(playbackType, attrs, controlType, max, current) .getInstance(); .getInstance(); } } public static PlaybackInfo fromBundle(Context context, Bundle bundle) { static PlaybackInfo fromBundle(Bundle bundle) { if (bundle == null) { if (bundle == null) { return null; return null; } } Loading @@ -1137,8 +1135,7 @@ public class MediaController2Impl implements MediaController2Provider { final int currentVolume = bundle.getInt(KEY_CURRENT_VOLUME); final int currentVolume = bundle.getInt(KEY_CURRENT_VOLUME); final AudioAttributes attrs = bundle.getParcelable(KEY_AUDIO_ATTRIBUTES); final AudioAttributes attrs = bundle.getParcelable(KEY_AUDIO_ATTRIBUTES); return createPlaybackInfo( return createPlaybackInfo(volumeType, attrs, volumeControl, maxVolume, currentVolume); context, volumeType, attrs, volumeControl, maxVolume, currentVolume); } } } } } }
packages/MediaComponents/src/com/android/media/MediaController2Stub.java +14 −20 Original line number Original line Diff line number Diff line Loading @@ -141,15 +141,14 @@ public class MediaController2Stub extends IMediaController2.Stub { } } List<MediaItem2> playlist = new ArrayList<>(); List<MediaItem2> playlist = new ArrayList<>(); for (Bundle bundle : playlistBundle) { for (Bundle bundle : playlistBundle) { MediaItem2 item = MediaItem2.fromBundle(controller.getContext(), bundle); MediaItem2 item = MediaItem2.fromBundle(bundle); if (item == null) { if (item == null) { Log.w(TAG, "onPlaylistChanged(): Ignoring null item in playlist"); Log.w(TAG, "onPlaylistChanged(): Ignoring null item in playlist"); } else { } else { playlist.add(item); playlist.add(item); } } } } MediaMetadata2 metadata = MediaMetadata2 metadata = MediaMetadata2.fromBundle(metadataBundle); MediaMetadata2.fromBundle(controller.getContext(), metadataBundle); controller.pushPlaylistChanges(playlist, metadata); controller.pushPlaylistChanges(playlist, metadata); } } Loading @@ -162,8 +161,7 @@ public class MediaController2Stub extends IMediaController2.Stub { Log.w(TAG, "Don't fail silently here. Highly likely a bug"); Log.w(TAG, "Don't fail silently here. Highly likely a bug"); return; return; } } MediaMetadata2 metadata = MediaMetadata2 metadata = MediaMetadata2.fromBundle(metadataBundle); MediaMetadata2.fromBundle(controller.getContext(), metadataBundle); controller.pushPlaylistMetadataChanges(metadata); controller.pushPlaylistMetadataChanges(metadata); } } Loading Loading @@ -191,14 +189,12 @@ public class MediaController2Stub extends IMediaController2.Stub { Log.w(TAG, "Don't fail silently here. Highly likely a bug"); Log.w(TAG, "Don't fail silently here. Highly likely a bug"); return; return; } } MediaController2.PlaybackInfo info = MediaController2.PlaybackInfo info = PlaybackInfoImpl.fromBundle(playbackInfo); PlaybackInfoImpl.fromBundle(controller.getContext(), playbackInfo); if (info == null) { if (info == null) { Log.w(TAG, "onPlaybackInfoChanged(): Ignoring null playbackInfo"); Log.w(TAG, "onPlaybackInfoChanged(): Ignoring null playbackInfo"); return; return; } } controller.pushPlaybackInfoChanges( controller.pushPlaybackInfoChanges(info); PlaybackInfoImpl.fromBundle(controller.getContext(), playbackInfo)); } } @Override @Override Loading Loading @@ -242,16 +238,16 @@ public class MediaController2Stub extends IMediaController2.Stub { if (itemBundleList != null) { if (itemBundleList != null) { itemList = new ArrayList<>(); itemList = new ArrayList<>(); for (int i = 0; i < itemBundleList.size(); i++) { for (int i = 0; i < itemBundleList.size(); i++) { MediaItem2 item = MediaItem2.fromBundle(context, itemBundleList.get(i)); MediaItem2 item = MediaItem2.fromBundle(itemBundleList.get(i)); if (item != null) { if (item != null) { itemList.add(item); itemList.add(item); } } } } } } controller.onConnectedNotLocked(sessionBinder, controller.onConnectedNotLocked(sessionBinder, CommandGroup.fromBundle(context, commandGroup), CommandGroup.fromBundle(commandGroup), playerState, positionEventTimeMs, positionMs, playbackSpeed, bufferedPositionMs, playerState, positionEventTimeMs, positionMs, playbackSpeed, bufferedPositionMs, PlaybackInfoImpl.fromBundle(context, playbackInfo), repeatMode, shuffleMode, PlaybackInfoImpl.fromBundle(playbackInfo), repeatMode, shuffleMode, itemList, sessionActivity); itemList, sessionActivity); } } Loading Loading @@ -286,8 +282,7 @@ public class MediaController2Stub extends IMediaController2.Stub { } } List<CommandButton> layout = new ArrayList<>(); List<CommandButton> layout = new ArrayList<>(); for (int i = 0; i < commandButtonlist.size(); i++) { for (int i = 0; i < commandButtonlist.size(); i++) { CommandButton button = CommandButtonImpl.fromBundle( CommandButton button = CommandButtonImpl.fromBundle(commandButtonlist.get(i)); controller.getContext(), commandButtonlist.get(i)); if (button != null) { if (button != null) { layout.add(button); layout.add(button); } } Loading @@ -308,7 +303,7 @@ public class MediaController2Stub extends IMediaController2.Stub { // TODO(jaewan): Revisit here. Could be a bug // TODO(jaewan): Revisit here. Could be a bug return; return; } } CommandGroup commands = CommandGroup.fromBundle(controller.getContext(), commandsBundle); CommandGroup commands = CommandGroup.fromBundle(commandsBundle); if (commands == null) { if (commands == null) { Log.w(TAG, "onAllowedCommandsChanged(): Ignoring null commands"); Log.w(TAG, "onAllowedCommandsChanged(): Ignoring null commands"); return; return; Loading @@ -325,7 +320,7 @@ public class MediaController2Stub extends IMediaController2.Stub { Log.w(TAG, "Don't fail silently here. Highly likely a bug"); Log.w(TAG, "Don't fail silently here. Highly likely a bug"); return; return; } } Command command = Command.fromBundle(controller.getContext(), commandBundle); Command command = Command.fromBundle(commandBundle); if (command == null) { if (command == null) { Log.w(TAG, "onCustomCommand(): Ignoring null command"); Log.w(TAG, "onCustomCommand(): Ignoring null command"); return; return; Loading Loading @@ -371,8 +366,7 @@ public class MediaController2Stub extends IMediaController2.Stub { // TODO(jaewan): Revisit here. Could be a bug // TODO(jaewan): Revisit here. Could be a bug return; return; } } browser.onGetItemDone(mediaId, browser.onGetItemDone(mediaId, MediaItem2.fromBundle(itemBundle)); MediaItem2Impl.fromBundle(browser.getContext(), itemBundle)); } } @Override @Override Loading @@ -398,7 +392,7 @@ public class MediaController2Stub extends IMediaController2.Stub { if (itemBundleList != null) { if (itemBundleList != null) { result = new ArrayList<>(); result = new ArrayList<>(); for (Bundle bundle : itemBundleList) { for (Bundle bundle : itemBundleList) { result.add(MediaItem2.fromBundle(browser.getContext(), bundle)); result.add(MediaItem2.fromBundle(bundle)); } } } } browser.onGetChildrenDone(parentId, page, pageSize, result, extras); browser.onGetChildrenDone(parentId, page, pageSize, result, extras); Loading Loading @@ -448,7 +442,7 @@ public class MediaController2Stub extends IMediaController2.Stub { if (itemBundleList != null) { if (itemBundleList != null) { result = new ArrayList<>(); result = new ArrayList<>(); for (Bundle bundle : itemBundleList) { for (Bundle bundle : itemBundleList) { result.add(MediaItem2.fromBundle(browser.getContext(), bundle)); result.add(MediaItem2.fromBundle(bundle)); } } } } browser.onGetSearchResultDone(query, page, pageSize, result, extras); browser.onGetSearchResultDone(query, page, pageSize, result, extras); Loading
packages/MediaComponents/src/com/android/media/MediaItem2Impl.java +12 −23 Original line number Original line Diff line number Diff line Loading @@ -21,7 +21,6 @@ import static android.media.MediaItem2.FLAG_PLAYABLE; import android.annotation.NonNull; import android.annotation.NonNull; import android.annotation.Nullable; import android.annotation.Nullable; import android.content.Context; import android.media.DataSourceDesc; import android.media.DataSourceDesc; import android.media.MediaItem2; import android.media.MediaItem2; import android.media.MediaItem2.Builder; import android.media.MediaItem2.Builder; Loading @@ -39,7 +38,6 @@ public class MediaItem2Impl implements MediaItem2Provider { private static final String KEY_METADATA = "android.media.mediaitem2.metadata"; private static final String KEY_METADATA = "android.media.mediaitem2.metadata"; private static final String KEY_UUID = "android.media.mediaitem2.uuid"; private static final String KEY_UUID = "android.media.mediaitem2.uuid"; private final Context mContext; private final MediaItem2 mInstance; private final MediaItem2 mInstance; private final String mId; private final String mId; private final int mFlags; private final int mFlags; Loading @@ -48,14 +46,13 @@ public class MediaItem2Impl implements MediaItem2Provider { private DataSourceDesc mDataSourceDesc; private DataSourceDesc mDataSourceDesc; // From the public API // From the public API public MediaItem2Impl(@NonNull Context context, @NonNull String mediaId, public MediaItem2Impl(@NonNull String mediaId, @Nullable DataSourceDesc dsd, @Nullable DataSourceDesc dsd, @Nullable MediaMetadata2 metadata, @Flags int flags) { @Nullable MediaMetadata2 metadata, @Flags int flags) { this(context, mediaId, dsd, metadata, flags, null); this(mediaId, dsd, metadata, flags, null); } } private MediaItem2Impl(@NonNull Context context, @NonNull String mediaId, private MediaItem2Impl(@NonNull String mediaId, @Nullable DataSourceDesc dsd, @Nullable DataSourceDesc dsd, @Nullable MediaMetadata2 metadata, @Flags int flags, @Nullable MediaMetadata2 metadata, @Flags int flags, @Nullable UUID uuid) { @Nullable UUID uuid) { if (mediaId == null) { if (mediaId == null) { throw new IllegalArgumentException("mediaId shouldn't be null"); throw new IllegalArgumentException("mediaId shouldn't be null"); } } Loading @@ -63,7 +60,6 @@ public class MediaItem2Impl implements MediaItem2Provider { throw new IllegalArgumentException("metadata's id should be matched with the mediaid"); throw new IllegalArgumentException("metadata's id should be matched with the mediaid"); } } mContext = context; mId = mediaId; mId = mediaId; mDataSourceDesc = dsd; mDataSourceDesc = dsd; mMetadata = metadata; mMetadata = metadata; Loading Loading @@ -101,16 +97,15 @@ public class MediaItem2Impl implements MediaItem2Provider { /** /** * Create a MediaItem2 from the {@link Bundle}. * Create a MediaItem2 from the {@link Bundle}. * * * @param context A context. * @param bundle The bundle which was published by {@link MediaItem2#toBundle()}. * @param bundle The bundle which was published by {@link MediaItem2#toBundle()}. * @return The newly created MediaItem2 * @return The newly created MediaItem2 */ */ public static MediaItem2 fromBundle(@NonNull Context context, @NonNull Bundle bundle) { public static MediaItem2 fromBundle_impl(@NonNull Bundle bundle) { if (bundle == null) { if (bundle == null) { return null; return null; } } final String uuidString = bundle.getString(KEY_UUID); final String uuidString = bundle.getString(KEY_UUID); return fromBundle(context, bundle, UUID.fromString(uuidString)); return fromBundle(bundle, UUID.fromString(uuidString)); } } /** /** Loading @@ -118,22 +113,19 @@ public class MediaItem2Impl implements MediaItem2Provider { * If {@link UUID} * If {@link UUID} * can be null for creating new. * can be null for creating new. * * * @param context A context. * @param bundle The bundle which was published by {@link MediaItem2#toBundle()}. * @param bundle The bundle which was published by {@link MediaItem2#toBundle()}. * @param uuid A {@link UUID} to override. Can be {@link null} for override. * @param uuid A {@link UUID} to override. Can be {@link null} for override. * @return The newly created MediaItem2 * @return The newly created MediaItem2 */ */ static MediaItem2 fromBundle(@NonNull Context context, @NonNull Bundle bundle, static MediaItem2 fromBundle(@NonNull Bundle bundle, @Nullable UUID uuid) { @Nullable UUID uuid) { if (bundle == null) { if (bundle == null) { return null; return null; } } final String id = bundle.getString(KEY_ID); final String id = bundle.getString(KEY_ID); final Bundle metadataBundle = bundle.getBundle(KEY_METADATA); final Bundle metadataBundle = bundle.getBundle(KEY_METADATA); final MediaMetadata2 metadata = metadataBundle != null final MediaMetadata2 metadata = MediaMetadata2.fromBundle(metadataBundle); ? MediaMetadata2.fromBundle(context, metadataBundle) : null; final int flags = bundle.getInt(KEY_FLAGS); final int flags = bundle.getInt(KEY_FLAGS); return new MediaItem2Impl(context, id, null, metadata, flags, uuid).getInstance(); return new MediaItem2Impl(id, null, metadata, flags, uuid).getInstance(); } } private MediaItem2 getInstance() { private MediaItem2 getInstance() { Loading Loading @@ -188,15 +180,13 @@ public class MediaItem2Impl implements MediaItem2Provider { } } public static class BuilderImpl implements MediaItem2Provider.BuilderProvider { public static class BuilderImpl implements MediaItem2Provider.BuilderProvider { private Context mContext; private Builder mInstance; private Builder mInstance; private @Flags int mFlags; private @Flags int mFlags; private String mMediaId; private String mMediaId; private MediaMetadata2 mMetadata; private MediaMetadata2 mMetadata; private DataSourceDesc mDataSourceDesc; private DataSourceDesc mDataSourceDesc; public BuilderImpl(Context context, Builder instance, int flags) { public BuilderImpl(Builder instance, int flags) { mContext = context; mInstance = instance; mInstance = instance; mFlags = flags; mFlags = flags; } } Loading Loading @@ -227,8 +217,7 @@ public class MediaItem2Impl implements MediaItem2Provider { // TODO(jaewan): Double check if its sufficient (e.g. Use UUID instead?) // TODO(jaewan): Double check if its sufficient (e.g. Use UUID instead?) id = (mMediaId != null) ? mMediaId : toString(); id = (mMediaId != null) ? mMediaId : toString(); } } return new MediaItem2Impl(mContext, id, mDataSourceDesc, mMetadata, mFlags) return new MediaItem2Impl(id, mDataSourceDesc, mMetadata, mFlags).getInstance(); .getInstance(); } } } } } }
packages/MediaComponents/src/com/android/media/MediaLibraryService2Impl.java +1 −2 Original line number Original line Diff line number Diff line Loading @@ -151,8 +151,7 @@ public class MediaLibraryService2Impl extends MediaSessionService2Impl implement private final String mRootId; private final String mRootId; private final Bundle mExtras; private final Bundle mExtras; public LibraryRootImpl(Context context, LibraryRoot instance, String rootId, public LibraryRootImpl(LibraryRoot instance, String rootId, Bundle extras) { Bundle extras) { if (rootId == null) { if (rootId == null) { throw new IllegalArgumentException("rootId shouldn't be null."); throw new IllegalArgumentException("rootId shouldn't be null."); } } Loading
packages/MediaComponents/src/com/android/media/MediaMetadata2Impl.java +8 −16 Original line number Original line Diff line number Diff line Loading @@ -19,7 +19,6 @@ package com.android.media; import static android.media.MediaMetadata2.*; import static android.media.MediaMetadata2.*; import android.annotation.Nullable; import android.annotation.Nullable; import android.content.Context; import android.graphics.Bitmap; import android.graphics.Bitmap; import android.media.MediaMetadata2; import android.media.MediaMetadata2; import android.media.MediaMetadata2.BitmapKey; import android.media.MediaMetadata2.BitmapKey; Loading Loading @@ -105,12 +104,10 @@ public class MediaMetadata2Impl implements MediaMetadata2Provider { METADATA_KEY_ALBUM_ART_URI METADATA_KEY_ALBUM_ART_URI }; }; private final Context mContext; private final MediaMetadata2 mInstance; private final MediaMetadata2 mInstance; private final Bundle mBundle; private final Bundle mBundle; public MediaMetadata2Impl(Context context, Bundle bundle) { public MediaMetadata2Impl(Bundle bundle) { mContext = context; mInstance = new MediaMetadata2(this); mInstance = new MediaMetadata2(this); mBundle = bundle; mBundle = bundle; } } Loading Loading @@ -168,7 +165,7 @@ public class MediaMetadata2Impl implements MediaMetadata2Provider { // TODO(jaewan): Add backward compatibility // TODO(jaewan): Add backward compatibility Rating2 rating = null; Rating2 rating = null; try { try { rating = Rating2.fromBundle(mContext, mBundle.getBundle(key)); rating = Rating2.fromBundle(mBundle.getBundle(key)); } catch (Exception e) { } catch (Exception e) { // ignore, value was not a rating // ignore, value was not a rating Log.w(TAG, "Failed to retrieve a key as Rating.", e); Log.w(TAG, "Failed to retrieve a key as Rating.", e); Loading Loading @@ -225,33 +222,28 @@ public class MediaMetadata2Impl implements MediaMetadata2Provider { return mBundle; return mBundle; } } public static MediaMetadata2 fromBundle(Context context, Bundle bundle) { public static MediaMetadata2 fromBundle_impl(Bundle bundle) { return (bundle == null) ? null : new MediaMetadata2Impl(context, bundle).getInstance(); return (bundle == null) ? null : new MediaMetadata2Impl(bundle).getInstance(); } } public static final class BuilderImpl implements MediaMetadata2Provider.BuilderProvider { public static final class BuilderImpl implements MediaMetadata2Provider.BuilderProvider { private final Context mContext; private final MediaMetadata2.Builder mInstance; private final MediaMetadata2.Builder mInstance; private final Bundle mBundle; private final Bundle mBundle; public BuilderImpl(Context context, MediaMetadata2.Builder instance) { public BuilderImpl(MediaMetadata2.Builder instance) { mContext = context; mInstance = instance; mInstance = instance; mBundle = new Bundle(); mBundle = new Bundle(); } } public BuilderImpl(Context context, MediaMetadata2.Builder instance, public BuilderImpl(MediaMetadata2.Builder instance, MediaMetadata2 source) { MediaMetadata2 source) { if (source == null) { if (source == null) { throw new IllegalArgumentException("source shouldn't be null"); throw new IllegalArgumentException("source shouldn't be null"); } } mContext = context; mInstance = instance; mInstance = instance; mBundle = new Bundle(source.toBundle()); mBundle = new Bundle(source.toBundle()); } } public BuilderImpl(Context context, int maxBitmapSize) { public BuilderImpl(int maxBitmapSize) { mContext = context; mInstance = new MediaMetadata2.Builder(this); mInstance = new MediaMetadata2.Builder(this); mBundle = new Bundle(); mBundle = new Bundle(); Loading Loading @@ -364,7 +356,7 @@ public class MediaMetadata2Impl implements MediaMetadata2Provider { @Override @Override public MediaMetadata2 build_impl() { public MediaMetadata2 build_impl() { return new MediaMetadata2Impl(mContext, mBundle).getInstance(); return new MediaMetadata2Impl(mBundle).getInstance(); } } private Bitmap scaleBitmap(Bitmap bmp, int maxSize) { private Bitmap scaleBitmap(Bitmap bmp, int maxSize) { Loading