.putString(MediaMetadataCompat.METADATA_KEY_MEDIA_URI, Uri.parse(mediaId).toString()) .build(); final MediaItem mediaItem = new MediaItem(metadataCompat.getDescription(), flag); mediaItems.put(mediaId, mediaItem);
/** * 获取 List#MediaBrowserCompat.MediaItem 用于 onLoadChildren 回调 */ public List<MediaBrowserCompat.MediaItem> getChildrenResult(String mediaId) { List<MediaBrowserCompat.MediaItem> mediaItems = new ArrayList<>(); for (MediaMetadataCompat metadata : metadatas) { MediaBrowserCompat.MediaItem mediaItem = new MediaBrowserCompat.MediaItem( metadata.getDescription(), MediaBrowserCompat.MediaItem.FLAG_PLAYABLE); mediaItems.add(mediaItem); } return mediaItems; }
public static List<MediaBrowserCompat.MediaItem> getMediaItems() { List<MediaBrowserCompat.MediaItem> result = new ArrayList<>(); for (MediaMetadataCompat metadata : music.values()) { result.add( new MediaBrowserCompat.MediaItem( metadata.getDescription(), MediaBrowserCompat.MediaItem.FLAG_PLAYABLE)); } return result; }
public Notification getNotification(MediaMetadataCompat metadata, @NonNull PlaybackStateCompat state, MediaSessionCompat.Token token) { boolean isPlaying = state.getState() == PlaybackStateCompat.STATE_PLAYING; MediaDescriptionCompat description = metadata.getDescription(); NotificationCompat.Builder builder = buildNotification(state, token, isPlaying, description); return builder.build(); }
/** * List<MediaMetadataCompat> 转 List<MediaSessionCompat.QueueItem> */ private static List<MediaSessionCompat.QueueItem> convertToQueue(List<MediaMetadataCompat> tracks) { List<MediaSessionCompat.QueueItem> queue = new ArrayList<>(); int count = 0; for (MediaMetadataCompat track : tracks) { MediaMetadataCompat trackCopy = new MediaMetadataCompat.Builder(track) .putString(MediaMetadataCompat.METADATA_KEY_MEDIA_ID, track.getDescription().getMediaId()) .build(); MediaSessionCompat.QueueItem item = new MediaSessionCompat.QueueItem( trackCopy.getDescription(), count++); queue.add(item); } return queue; }
private Object fullDescription(MediaMetadataCompat metadata) { Bundle bundle = metadata.getDescription().getExtras(); if (bundle != null) { bundle.putAll(metadata.getBundle()); } return bundle; }
private void loadChildren(@NonNull final String parentMediaId, final Result<List<MediaBrowserCompat.MediaItem>> result) { List<MediaBrowserCompat.MediaItem> mediaItems = new ArrayList<>(); switch (parentMediaId) { case MEDIA_ID_ROOT: for (MediaMetadataCompat track : mStationListProvider.getAllStations()) { MediaBrowserCompat.MediaItem item = new MediaBrowserCompat.MediaItem(track.getDescription(), MediaBrowserCompat.MediaItem.FLAG_PLAYABLE); mediaItems.add(item); } break; case MEDIA_ID_EMPTY_ROOT: // since the client provided the empty root we'll just send back an empty list break; default: LogHelper.w(LOG_TAG, "Skipping unmatched parentMediaId: " + parentMediaId); break; } result.sendResult(mediaItems); }
@Override public void playFromMedia(MediaMetadataCompat metadata) { mCurrentMedia = metadata; final String mediaId = metadata.getDescription().getMediaId(); playFile(MusicLibrary.getMusicFilename(mediaId)); }
.putString(MediaMetadataCompat.METADATA_KEY_MEDIA_URI, Uri.parse(mediaId).toString()) .build(); final MediaItem mediaItem = new MediaItem(metadataCompat.getDescription(), flag); mediaItems.put(mediaId, mediaItem);
private static NotificationCompat.Builder generateNotificationBuilderFrom(Context context, MediaSessionCompat mediaSession) { MediaControllerCompat controller = mediaSession.getController(); MediaMetadataCompat mediaMetadata = controller.getMetadata(); MediaDescriptionCompat description = mediaMetadata.getDescription(); NotificationCompat.Builder builder = new NotificationCompat.Builder(context); builder .setContentTitle(description.getTitle()) .setContentText(description.getSubtitle()) .setSubText(description.getDescription()) .setLargeIcon(description.getIconBitmap()) .setContentIntent(controller.getSessionActivity()) // always null... .setVisibility(NotificationCompat.VISIBILITY_PUBLIC) .setDeleteIntent(generateActionIntent(context, KeyEvent.KEYCODE_MEDIA_STOP)); return builder; }
/** * 判断当前的媒体是否在播放 */ public static boolean isQueueItemPlaying(Activity context, MediaSessionCompat.QueueItem queueItem) { MediaControllerCompat controller = MediaControllerCompat.getMediaController(context); if (controller != null && controller.getPlaybackState() != null) { long currentPlayingQueueId = controller.getPlaybackState().getActiveQueueItemId(); String currentPlayingMediaId = controller.getMetadata().getDescription().getMediaId(); String itemMusicId = queueItem.getDescription().getMediaId(); return queueItem.getQueueId() == currentPlayingQueueId && currentPlayingMediaId != null && TextUtils.equals(currentPlayingMediaId, itemMusicId); } return false; } }
return null; MediaDescriptionCompat description = mMetadata.getDescription();
mService.getString(R.string.label_next), mNextIntent); MediaDescriptionCompat description = mMetadata.getDescription();
return null; MediaDescriptionCompat description = mMetadata.getDescription();
MediaDescriptionCompat description = mMetadata.getDescription();
public Notification buildMediaNotification() { MediaControllerCompat controller = mMediaSession.getController(); MediaMetadataCompat mediaMetadata = controller.getMetadata(); MediaDescriptionCompat description = mediaMetadata.getDescription();