下面列出了怎么用android.media.browse.MediaBrowser的API类实例代码及写法,或者点击链接到github查看源代码。
@Override
public View getView(int position, View convertView, ViewGroup parent) {
MediaBrowser.MediaItem item = getItem(position);
int itemState = MediaItemViewHolder.STATE_NONE;
if (item.isPlayable()) {
String itemMediaId = item.getDescription().getMediaId();
int playbackState = PlaybackState.STATE_NONE;
if (mCurrentState != null) {
playbackState = mCurrentState.getState();
}
if (mCurrentMetadata != null &&
itemMediaId.equals(mCurrentMetadata.getDescription().getMediaId())) {
if (playbackState == PlaybackState.STATE_PLAYING ||
playbackState == PlaybackState.STATE_BUFFERING) {
itemState = MediaItemViewHolder.STATE_PLAYING;
} else if (playbackState != PlaybackState.STATE_ERROR) {
itemState = MediaItemViewHolder.STATE_PAUSED;
}
}
}
return MediaItemViewHolder.setupView((Activity) getContext(), convertView, parent,
item.getDescription(), itemState);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
MediaBrowser.MediaItem item = getItem(position);
int itemState = MediaItemViewHolder.STATE_NONE;
if (item.isPlayable()) {
String itemMediaId = item.getDescription().getMediaId();
int playbackState = PlaybackState.STATE_NONE;
if (mCurrentState != null) {
playbackState = mCurrentState.getState();
}
if (mCurrentMetadata != null &&
itemMediaId.equals(mCurrentMetadata.getDescription().getMediaId())) {
if (playbackState == PlaybackState.STATE_PLAYING ||
playbackState == PlaybackState.STATE_BUFFERING) {
itemState = MediaItemViewHolder.STATE_PLAYING;
} else if (playbackState != PlaybackState.STATE_ERROR) {
itemState = MediaItemViewHolder.STATE_PAUSED;
}
}
}
return MediaItemViewHolder.setupView((Activity) getContext(), convertView, parent,
item.getDescription(), itemState);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
MediaBrowser.MediaItem item = getItem(position);
int itemState = MediaItemViewHolder.STATE_NONE;
if (item.isPlayable()) {
String itemMediaId = item.getDescription().getMediaId();
int playbackState = PlaybackState.STATE_NONE;
if (mCurrentState != null) {
playbackState = mCurrentState.getState();
}
if (mCurrentMetadata != null &&
itemMediaId.equals(mCurrentMetadata.getDescription().getMediaId())) {
if (playbackState == PlaybackState.STATE_PLAYING ||
playbackState == PlaybackState.STATE_BUFFERING) {
itemState = MediaItemViewHolder.STATE_PLAYING;
} else if (playbackState != PlaybackState.STATE_ERROR) {
itemState = MediaItemViewHolder.STATE_PAUSED;
}
}
}
return MediaItemViewHolder.setupView((Activity) getContext(), convertView, parent,
item.getDescription(), itemState);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
MediaBrowser.MediaItem item = getItem(position);
int itemState = MediaItemViewHolder.STATE_NONE;
if (item.isPlayable()) {
String itemMediaId = item.getDescription().getMediaId();
int playbackState = PlaybackState.STATE_NONE;
if (mCurrentState != null) {
playbackState = mCurrentState.getState();
}
if (mCurrentMetadata != null &&
itemMediaId.equals(mCurrentMetadata.getDescription().getMediaId())) {
if (playbackState == PlaybackState.STATE_PLAYING ||
playbackState == PlaybackState.STATE_BUFFERING) {
itemState = MediaItemViewHolder.STATE_PLAYING;
} else if (playbackState != PlaybackState.STATE_ERROR) {
itemState = MediaItemViewHolder.STATE_PAUSED;
}
}
}
return MediaItemViewHolder.setupView((Activity) getContext(), convertView, parent,
item.getDescription(), itemState);
}
private MediaBrowser.MediaItem generatePlayableMediaItem( Song song ) {
if( song == null )
return null;
MediaDescription.Builder mediaDescriptionBuilder = new MediaDescription.Builder();
mediaDescriptionBuilder.setMediaId( song.getuId() );
if( !TextUtils.isEmpty( song.getTitle() ) )
mediaDescriptionBuilder.setTitle( song.getTitle() );
if( !TextUtils.isEmpty( song.getArtist() ) )
mediaDescriptionBuilder.setSubtitle( song.getArtist() );
if( !TextUtils.isEmpty( song.getThumbnailUrl() ) )
mediaDescriptionBuilder.setIconUri( Uri.parse( song.getThumbnailUrl() ) );
return new MediaBrowser.MediaItem( mediaDescriptionBuilder.build(), MediaBrowser.MediaItem.FLAG_PLAYABLE );
}
private void fillMediaItems(List<MediaBrowser.MediaItem> mediaItems, String mediaId, String title, Uri icon, String subTitle, int playableOrBrowsable) {
mediaItems.add(new MediaBrowser.MediaItem(
new MediaDescription.Builder()
.setMediaId(mediaId)
.setTitle(title)
.setIconUri(icon)
.setSubtitle(subTitle)
.build(), playableOrBrowsable
));
}
public static List<MediaBrowser.MediaItem> getMediaItems() {
List<MediaBrowser.MediaItem> result = new ArrayList<>();
for (MediaMetadata metadata: music.values()) {
result.add(new MediaBrowser.MediaItem(metadata.getDescription(),
MediaBrowser.MediaItem.FLAG_PLAYABLE));
}
return result;
}
private void onMediaItemSelected(MediaBrowser.MediaItem item) {
if (item.isPlayable()) {
// ------------ CHANGE 2 - REMOVE FOLLOWING LINES FOR PLAYBACK ON A SERVICE
MediaMetadata metadata = MusicLibrary.getMetadata(this, item.getMediaId());
mPlaybackManager.play(metadata);
updateMetadata(metadata);
/* ------------ CHANGE 2 - UNCOMMENT FOLLOWING LINES FOR PLAYBACK ON A SERVICE
getMediaController().getTransportControls().playFromMediaId(item.getMediaId(), null);
// ------------ CHANGE 2 - END OF PLAYBACK ON A SERVICE SNIPPET */
}
}
public static List<MediaBrowser.MediaItem> getMediaItems() {
List<MediaBrowser.MediaItem> result = new ArrayList<>();
for (MediaMetadata metadata: music.values()) {
result.add(new MediaBrowser.MediaItem(metadata.getDescription(),
MediaBrowser.MediaItem.FLAG_PLAYABLE));
}
return result;
}
@Override
public void onStart() {
super.onStart();
mMediaBrowser = new MediaBrowser(this,
new ComponentName(this, MusicService.class), mConnectionCallback, null);
mMediaBrowser.connect();
}
public static List<MediaBrowser.MediaItem> getMediaItems() {
List<MediaBrowser.MediaItem> result = new ArrayList<>();
for (MediaMetadata metadata: music.values()) {
result.add(new MediaBrowser.MediaItem(metadata.getDescription(),
MediaBrowser.MediaItem.FLAG_PLAYABLE));
}
return result;
}
private void onMediaItemSelected(MediaBrowser.MediaItem item) {
if (item.isPlayable()) {
// ------------ CHANGE 2 - REMOVE FOLLOWING LINES FOR PLAYBACK ON A SERVICE
MediaMetadata metadata = MusicLibrary.getMetadata(this, item.getMediaId());
mPlaybackManager.play(metadata);
updateMetadata(metadata);
/* ------------ CHANGE 2 - UNCOMMENT FOLLOWING LINES FOR PLAYBACK ON A SERVICE
getMediaController().getTransportControls().playFromMediaId(item.getMediaId(), null);
// ------------ CHANGE 2 - END OF PLAYBACK ON A SERVICE SNIPPET */
}
}
public static List<MediaBrowser.MediaItem> getMediaItems() {
List<MediaBrowser.MediaItem> result = new ArrayList<>();
for (MediaMetadata metadata: music.values()) {
result.add(new MediaBrowser.MediaItem(metadata.getDescription(),
MediaBrowser.MediaItem.FLAG_PLAYABLE));
}
return result;
}
@Override
public void onStart() {
super.onStart();
mMediaBrowser = new MediaBrowser(this,
new ComponentName(this, MusicService.class), mConnectionCallback, null);
mMediaBrowser.connect();
}
@Override
public void onLoadChildren(String parentId, Result<List<MediaBrowser.MediaItem>> result) {
List<MediaBrowser.MediaItem> items = getMediaItemsById( parentId );
if( items != null ) {
result.sendResult( items );
}
}
private List<MediaBrowser.MediaItem> getMediaItemsById( String id ) {
List<MediaBrowser.MediaItem> mediaItems = new ArrayList<MediaBrowser.MediaItem>();
if( BROWSEABLE_ROOT.equalsIgnoreCase( id ) ) {
mediaItems.add( generateBrowseableMediaItemByGenre(BROWSEABLE_CAJUN) );
mediaItems.add( generateBrowseableMediaItemByGenre(BROWSEABLE_JAZZ) );
mediaItems.add( generateBrowseableMediaItemByGenre(BROWSEABLE_ROCK) );
} else if( !TextUtils.isEmpty( id ) ) {
return getPlayableMediaItemsByGenre( id );
}
return mediaItems;
}
private List<MediaBrowser.MediaItem> getPlayableMediaItemsByGenre( String genre ) {
if( TextUtils.isEmpty( genre ) )
return null;
List<MediaBrowser.MediaItem> mediaItems = new ArrayList();
for( Song song : mSongs ) {
if( !TextUtils.isEmpty( song.getGenre() ) && genre.equalsIgnoreCase( song.getGenre() ) ) {
mediaItems.add( generatePlayableMediaItem( song ) );
}
}
return mediaItems;
}
private MediaBrowser.MediaItem generateBrowseableMediaItemByGenre( String genre ) {
MediaDescription.Builder mediaDescriptionBuilder = new MediaDescription.Builder();
mediaDescriptionBuilder.setMediaId( genre );
mediaDescriptionBuilder.setTitle( genre );
mediaDescriptionBuilder.setIconBitmap( BitmapFactory.decodeResource( getResources(), R.drawable.folder ) );
return new MediaBrowser.MediaItem( mediaDescriptionBuilder.build(), MediaBrowser.MediaItem.FLAG_BROWSABLE );
}
private void addMediaRoots(List<MediaBrowser.MediaItem> mMediaRoot) {
mMediaRoot.add(new MediaBrowser.MediaItem(
new MediaDescription.Builder()
.setMediaId(Integer.toString(TYPE_ARTIST))
.setTitle(getString(R.string.artists))
.setIconUri(Uri.parse("android.resource://" +
"naman14.timber/drawable/ic_empty_music2"))
.setSubtitle(getString(R.string.artists))
.build(), MediaBrowser.MediaItem.FLAG_BROWSABLE
));
mMediaRoot.add(new MediaBrowser.MediaItem(
new MediaDescription.Builder()
.setMediaId(Integer.toString(TYPE_ALBUM))
.setTitle(getString(R.string.albums))
.setIconUri(Uri.parse("android.resource://" +
"naman14.timber/drawable/ic_empty_music2"))
.setSubtitle(getString(R.string.albums))
.build(), MediaBrowser.MediaItem.FLAG_BROWSABLE
));
mMediaRoot.add(new MediaBrowser.MediaItem(
new MediaDescription.Builder()
.setMediaId(Integer.toString(TYPE_SONG))
.setTitle(getString(R.string.songs))
.setIconUri(Uri.parse("android.resource://" +
"naman14.timber/drawable/ic_empty_music2"))
.setSubtitle(getString(R.string.songs))
.build(), MediaBrowser.MediaItem.FLAG_BROWSABLE
));
mMediaRoot.add(new MediaBrowser.MediaItem(
new MediaDescription.Builder()
.setMediaId(Integer.toString(TYPE_PLAYLIST))
.setTitle(getString(R.string.playlists))
.setIconUri(Uri.parse("android.resource://" +
"naman14.timber/drawable/ic_empty_music2"))
.setSubtitle(getString(R.string.playlists))
.build(), MediaBrowser.MediaItem.FLAG_BROWSABLE
));
}
private void onMediaLoaded(List<MediaBrowser.MediaItem> media) {
mBrowserAdapter.clear();
mBrowserAdapter.addAll(media);
mBrowserAdapter.notifyDataSetChanged();
}
public BrowseAdapter(Activity context) {
super(context, R.layout.media_list_item, new ArrayList<MediaBrowser.MediaItem>());
}
@Override
public void onChildrenLoaded(String parentId, List<MediaBrowser.MediaItem> children) {
onMediaLoaded(children);
}
private void onMediaLoaded(List<MediaBrowser.MediaItem> media) {
mBrowserAdapter.clear();
mBrowserAdapter.addAll(media);
mBrowserAdapter.notifyDataSetChanged();
}
private void onMediaItemSelected(MediaBrowser.MediaItem item) {
if (item.isPlayable()) {
getMediaController().getTransportControls().playFromMediaId(item.getMediaId(), null);
}
}
public BrowseAdapter(Activity context) {
super(context, R.layout.media_list_item, new ArrayList<MediaBrowser.MediaItem>());
}
private void onMediaLoaded(List<MediaBrowser.MediaItem> media) {
mBrowserAdapter.clear();
mBrowserAdapter.addAll(media);
mBrowserAdapter.notifyDataSetChanged();
}
public BrowseAdapter(Activity context) {
super(context, R.layout.media_list_item, new ArrayList<MediaBrowser.MediaItem>());
}
@Override
public void onChildrenLoaded(String parentId, List<MediaBrowser.MediaItem> children) {
onMediaLoaded(children);
}
private void onMediaLoaded(List<MediaBrowser.MediaItem> media) {
mBrowserAdapter.clear();
mBrowserAdapter.addAll(media);
mBrowserAdapter.notifyDataSetChanged();
}
private void onMediaItemSelected(MediaBrowser.MediaItem item) {
if (item.isPlayable()) {
getMediaController().getTransportControls().playFromMediaId(item.getMediaId(), null);
}
}