Java 类android.media.browse.MediaBrowser.MediaItem 实例源码
项目:boohee_v5.6
文件:ParceledListSliceAdapterApi21.java
static Object newInstance(List<MediaItem> itemList) {
ReflectiveOperationException e;
Object result = null;
try {
result = sConstructor.newInstance(new Object[]{itemList});
} catch (InstantiationException e2) {
e = e2;
e.printStackTrace();
return result;
} catch (IllegalAccessException e3) {
e = e3;
e.printStackTrace();
return result;
} catch (InvocationTargetException e4) {
e = e4;
e.printStackTrace();
return result;
}
return result;
}
项目:Podcatcher-Deluxe-Android-Studio
文件:PodcastBrowserService.java
@Override
public void onLoadChildren(@NonNull final String parentMediaId, @NonNull final Result<List<MediaItem>> result) {
result.detach();
switch (parentMediaId) {
case BROWSER_ROOT:
onLoadRoot(result);
break;
case DOWNLOADS_ROOT:
onLoadDownloads(result);
break;
case PLAYLIST_ROOT:
onLoadPlaylist(result);
break;
default:
onLoadPodcast(result, parentMediaId);
break;
}
}
项目:Podcatcher-Deluxe-Android-Studio
文件:PodcastBrowserService.java
private void onLoadDownloads(final Result<List<MediaItem>> result) {
this.currentTask = new PodcastBrowserAsyncTask() {
@Override
protected Void doInBackground(Void... params) {
// Build list of downloaded episodes
final List<Episode> downloads = episodeManager.getDownloads();
for (Episode download : downloads)
items.add(episodeToMediaItem(download));
return null;
}
@Override
protected void onPostExecute(Void aVoid) {
result.sendResult(items);
}
};
currentTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
}
项目:Podcatcher-Deluxe-Android-Studio
文件:PodcastBrowserService.java
private void onLoadPlaylist(final Result<List<MediaItem>> result) {
this.currentTask = new PodcastBrowserAsyncTask() {
@Override
protected Void doInBackground(Void... params) {
// Build list of episodes in playlist
final List<Episode> playlist = episodeManager.getPlaylist();
for (Episode episode : playlist)
items.add(episodeToMediaItem(episode));
return null;
}
@Override
protected void onPostExecute(Void aVoid) {
result.sendResult(items);
}
};
currentTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
}
项目:Podcatcher-Deluxe-Android-Studio
文件:PodcastBrowserService.java
@Override
public void onLoadChildren(@NonNull final String parentMediaId, @NonNull final Result<List<MediaItem>> result) {
result.detach();
switch (parentMediaId) {
case BROWSER_ROOT:
onLoadRoot(result);
break;
case DOWNLOADS_ROOT:
onLoadDownloads(result);
break;
default:
onLoadPodcast(result, parentMediaId);
break;
}
}
项目:Podcatcher-Deluxe-Android-Studio
文件:PodcastBrowserService.java
private void onLoadDownloads(final Result<List<MediaItem>> result) {
this.currentTask = new PodcastBrowserAsyncTask() {
@Override
protected Void doInBackground(Void... params) {
// Build list of downloaded episodes
final List<Episode> downloads = episodeManager.getDownloads();
for (Episode download : downloads)
items.add(episodeToMediaItem(download));
return null;
}
@Override
protected void onPostExecute(Void aVoid) {
result.sendResult(items);
}
};
currentTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
}
项目:boohee_v5.6
文件:MediaBrowserServiceCompatApi23.java
public void getMediaItem(String mediaId, final ResultReceiver receiver) {
ReflectiveOperationException e;
try {
final String KEY_MEDIA_ITEM = (String) MediaBrowserService.class.getDeclaredField("KEY_MEDIA_ITEM").get(null);
this.mServiceImpl.getMediaItem(mediaId, new ItemCallback() {
public void onItemLoaded(int resultCode, Bundle resultData, Parcel itemParcel) {
if (itemParcel != null) {
itemParcel.setDataPosition(0);
resultData.putParcelable(KEY_MEDIA_ITEM, (MediaItem) MediaItem.CREATOR.createFromParcel(itemParcel));
itemParcel.recycle();
}
receiver.send(resultCode, resultData);
}
});
} catch (IllegalAccessException e2) {
e = e2;
Log.i(MediaBrowserServiceCompatApi23.TAG, "Failed to get KEY_MEDIA_ITEM via reflection", e);
} catch (NoSuchFieldException e3) {
e = e3;
Log.i(MediaBrowserServiceCompatApi23.TAG, "Failed to get KEY_MEDIA_ITEM via reflection", e);
}
}
项目:MrinalMusicPlayer
文件:MusicService.java
@Override
public void onLoadChildren(@NonNull final String parentMediaId,
@NonNull final Result<List<MediaItem>> result) {
if (!mMusicProvider.isInitialized()) {
// Use result.detach to allow calling result.sendResult from another thread:
result.detach();
mMusicProvider.retrieveMediaAsync(new MusicProvider.Callback() {
@Override
public void onMusicCatalogReady(boolean success) {
if (success) {
loadChildrenImpl(parentMediaId, result);
} else {
updatePlaybackState(getString(R.string.error_no_metadata));
result.sendResult(Collections.<MediaItem>emptyList());
}
}
});
} else {
// If our music catalog is already loaded/cached, load them into result immediately
loadChildrenImpl(parentMediaId, result);
}
}
项目:MrinalMusicPlayer
文件:TvBrowseFragment.java
@Override
public void onChildrenLoaded(@NonNull String parentId,
@NonNull List<MediaBrowser.MediaItem> children) {
mListRowAdapter.clear();
for (MediaBrowser.MediaItem item : children) {
mListRowAdapter.add(item);
}
mListRowAdapter.notifyArrayItemRangeChanged(0, children.size());
}
项目:MrinalMusicPlayer
文件:TvVerticalGridFragment.java
@Override
public void onItemClicked(Presenter.ViewHolder itemViewHolder, Object item,
RowPresenter.ViewHolder rowViewHolder, Row row) {
getActivity().getMediaController().getTransportControls()
.playFromMediaId(((MediaItem) item).getMediaId(), null);
Intent intent = new Intent(getActivity(), TvPlaybackActivity.class);
Bundle bundle = ActivityOptionsCompat.makeSceneTransitionAnimation(
getActivity(),
((ImageCardView) itemViewHolder.view).getMainImageView(),
TvVerticalGridActivity.SHARED_ELEMENT_NAME).toBundle();
getActivity().startActivity(intent, bundle);
}
项目:MrinalMusicPlayer
文件:TvVerticalGridFragment.java
@Override
public void onChildrenLoaded(@NonNull String parentId, @NonNull List<MediaItem> children) {
mAdapter.clear();
for (int i = 0; i < children.size(); i++) {
MediaItem item = children.get(i);
if (!item.isPlayable()) {
LogHelper.e(TAG, "Cannot show non-playable items. Ignoring ", item.getMediaId());
} else {
mAdapter.add(item);
}
}
mAdapter.notifyArrayItemRangeChanged(0, children.size());
}
项目:UniversalMusicPlayer
文件:MusicService.java
@Override
public void onLoadChildren(final String parentMediaId, final Result<List<MediaItem>> result) {
if (!mMusicProvider.isInitialized()) {
// Use result.detach to allow calling result.sendResult from another thread:
result.detach();
mMusicProvider.retrieveMediaAsync(new MusicProvider.Callback() {
@Override
public void onMusicCatalogReady(boolean success) {
if (success) {
loadChildrenImpl(parentMediaId, result);
} else {
updatePlaybackState(getString(R.string.error_no_metadata));
result.sendResult(Collections.<MediaItem>emptyList());
}
}
});
} else {
// If our music catalog is already loaded/cached, load them into result immediately
loadChildrenImpl(parentMediaId, result);
}
}
项目:MusicFromChina
文件:MusicService.java
@Override
public void onLoadChildren(final String parentMediaId, final Result<List<MediaItem>> result) {
if (!mMusicProvider.isInitialized()) {
// Use result.detach to allow calling result.sendResult from another thread:
result.detach();
mMusicProvider.retrieveMediaAsync(new MusicProvider.Callback() {
@Override
public void onMusicCatalogReady(boolean success) {
if (success) {
loadChildrenImpl(parentMediaId, result);
} else {
updatePlaybackState(getString(R.string.error_no_metadata));
result.sendResult(Collections.<MediaItem>emptyList());
}
}
});
} else {
// If our music catalog is already loaded/cached, load them into result immediately
loadChildrenImpl(parentMediaId, result);
}
}
项目:UniversalAndroidMusicPlayer
文件:MusicService.java
@Override
public void onLoadChildren(@NonNull final String parentMediaId,
@NonNull final Result<List<MediaItem>> result) {
if (!mMusicProvider.isInitialized()) {
// Use result.detach to allow calling result.sendResult from another thread:
result.detach();
mMusicProvider.retrieveMediaAsync(new MusicProvider.Callback() {
@Override
public void onMusicCatalogReady(boolean success) {
if (success) {
loadChildrenImpl(parentMediaId, result);
} else {
updatePlaybackState(getString(R.string.error_no_metadata));
result.sendResult(Collections.<MediaItem>emptyList());
}
}
});
} else {
// If our music catalog is already loaded/cached, load them into result immediately
loadChildrenImpl(parentMediaId, result);
}
}
项目:UniversalAndroidMusicPlayer
文件:TvBrowseFragment.java
@Override
public void onChildrenLoaded(@NonNull String parentId,
@NonNull List<MediaBrowser.MediaItem> children) {
mListRowAdapter.clear();
for (MediaBrowser.MediaItem item : children) {
mListRowAdapter.add(item);
}
mListRowAdapter.notifyArrayItemRangeChanged(0, children.size());
}
项目:UniversalAndroidMusicPlayer
文件:TvVerticalGridFragment.java
@Override
public void onItemClicked(Presenter.ViewHolder itemViewHolder, Object item,
RowPresenter.ViewHolder rowViewHolder, Row row) {
getActivity().getMediaController().getTransportControls()
.playFromMediaId(((MediaItem) item).getMediaId(), null);
Intent intent = new Intent(getActivity(), TvPlaybackActivity.class);
Bundle bundle = ActivityOptionsCompat.makeSceneTransitionAnimation(
getActivity(),
((ImageCardView) itemViewHolder.view).getMainImageView(),
TvVerticalGridActivity.SHARED_ELEMENT_NAME).toBundle();
getActivity().startActivity(intent, bundle);
}
项目:UniversalAndroidMusicPlayer
文件:TvVerticalGridFragment.java
@Override
public void onChildrenLoaded(@NonNull String parentId, @NonNull List<MediaItem> children) {
mAdapter.clear();
for (int i = 0; i < children.size(); i++) {
MediaItem item = children.get(i);
if (!item.isPlayable()) {
LogHelper.e(TAG, "Cannot show non-playable items. Ignoring ", item.getMediaId());
} else {
mAdapter.add(item);
}
}
mAdapter.notifyArrayItemRangeChanged(0, children.size());
}
项目:Podcatcher-Deluxe-Android-Studio
文件:PodcastBrowserService.java
private MediaItem episodeToMediaItem(Episode episode) {
final Podcast podcast = episode.getPodcast();
final MediaDescription.Builder mediaDescription = new MediaDescription.Builder()
.setMediaId(episode.getMediaUrl())
.setTitle(episode.getName())
.setSubtitle(podcast.getName());
if (podcast.hasLogoUrl())
mediaDescription.setIconUri(Uri.parse(podcast.getLogoUrl()));
return new MediaItem(mediaDescription.build(), MediaItem.FLAG_PLAYABLE);
}
项目:Podcatcher-Deluxe-Android-Studio
文件:PodcastBrowserService.java
private MediaItem episodeToMediaItem(Episode episode) {
final Podcast podcast = episode.getPodcast();
final MediaDescription.Builder mediaDescription = new MediaDescription.Builder()
.setMediaId(episode.getMediaUrl())
.setTitle(episode.getName())
.setSubtitle(podcast.getName());
if (podcast.hasLogoUrl())
mediaDescription.setIconUri(Uri.parse(podcast.getLogoUrl()));
return new MediaItem(mediaDescription.build(), MediaItem.FLAG_PLAYABLE);
}
项目:boohee_v5.6
文件:MediaBrowserCompatApi23.java
public void onItemLoaded(MediaItem item) {
Parcel parcel = Parcel.obtain();
item.writeToParcel(parcel, 0);
this.mItemCallback.onItemLoaded(parcel);
}
项目:AndroidAutoTourGuide
文件:MuziKarMusicService.java
@Override
public void onLoadChildren(final String parentMediaId, final Result<List<MediaItem>> result) {
result.sendResult(LocalMusicSource.getMediaItems());
}
项目:AndroidAutoTourGuide
文件:MyMusicService.java
@Override
public void onLoadChildren(final String parentMediaId, final Result<List<MediaItem>> result) {
result.sendResult(new ArrayList<MediaItem>());
}
项目:AndroidAutoTourGuide
文件:MuziKarMusicService.java
@Override
public void onLoadChildren(final String parentMediaId, final Result<List<MediaItem>> result) {
Log.d (TAG, "onLoadChildren()" ) ;
result.sendResult(LocalMusicSource.getMediaItems());
}
项目:ChannelSurfer
文件:ExoPlayerAudio.java
@Override
public void onLoadChildren(final String parentMediaId, final Result<List<MediaItem>> result) {
result.sendResult(new ArrayList<MediaItem>());
}
项目:android-music-player
文件:MusicService.java
@Override
public void onLoadChildren(final String parentMediaId, final Result<List<MediaItem>> result) {
result.sendResult(MusicLibrary.getMediaItems());
}
项目:io2015-codelabs
文件:MusicService.java
@Override
public void onLoadChildren(final String parentMediaId, final Result<List<MediaItem>> result) {
result.sendResult(MusicLibrary.getMediaItems());
}
项目:Podcatcher-Deluxe-Android-Studio
文件:PodcastBrowserService.java
private void onLoadRoot(final Result<List<MediaItem>> result) {
this.currentTask = new PodcastBrowserAsyncTask() {
@Override
protected Void doInBackground(Void... params) {
try {
episodeManager.blockUntilEpisodeMetadataIsLoaded();
} catch (InterruptedException e) {
cancel(true);
}
// Add Downloads entry
if (episodeManager.getDownloadsSize() > 0)
items.add(new MediaItem(new MediaDescription.Builder()
.setMediaId(DOWNLOADS_ROOT)
.setTitle(getString(R.string.downloads))
.setSubtitle(getResources().getQuantityString(R.plurals.episodes,
episodeManager.getDownloadsSize(), episodeManager.getDownloadsSize()))
.build(), MediaItem.FLAG_BROWSABLE));
// Add Playlist entry
if (episodeManager.getPlaylistSize() > 0)
items.add(new MediaItem(new MediaDescription.Builder()
.setMediaId(PLAYLIST_ROOT)
.setTitle(getString(R.string.playlist))
.setSubtitle(getResources().getQuantityString(R.plurals.episodes,
episodeManager.getPlaylistSize(), episodeManager.getPlaylistSize()))
.build(), MediaItem.FLAG_BROWSABLE));
// Build list of podcasts
final List<Podcast> podcasts = podcastManager.getPodcastList();
for (Podcast podcast : podcasts) {
final int episodeCount = podcast.getEpisodeCount();
final MediaDescription.Builder mediaDescription = new MediaDescription.Builder()
.setMediaId(podcast.getUrl())
.setTitle(podcast.getName())
.setSubtitle(episodeCount > 0 ? getResources()
.getQuantityString(R.plurals.episodes, episodeCount, episodeCount) : null);
if (podcast.hasLogoUrl())
mediaDescription.setIconUri(Uri.parse(podcast.getLogoUrl()));
items.add(new MediaItem(mediaDescription.build(), MediaItem.FLAG_BROWSABLE));
}
return null;
}
@Override
protected void onPostExecute(Void aVoid) {
result.sendResult(items);
}
};
currentTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
}
项目:Podcatcher-Deluxe-Android-Studio
文件:PodcastBrowserService.java
private void onLoadPodcast(final Result<List<MediaItem>> result, final String podcastUrl) {
this.currentTask = new PodcastBrowserAsyncTask() {
/**
* Thread sync latch used to wait for podcast loading
*/
private CountDownLatch latch = new CountDownLatch(1);
/**
* The feed URL we are currently waiting for. Needs to
* be a member because we have to update it onPodcastMoved()
*/
private String loadingPodcastUrl = podcastUrl;
private OnLoadPodcastListener listener = new OnLoadPodcastListener() {
@Override
public void onPodcastLoadProgress(Podcast podcast, Progress progress) {
// pass
}
@Override
public void onPodcastMoved(Podcast podcast, String newUrl) {
if (podcast.equalByUrl(loadingPodcastUrl))
loadingPodcastUrl = newUrl;
}
@Override
public void onPodcastLoaded(Podcast podcast) {
// Make sure we got the right podcast
if (podcast.equalByUrl(loadingPodcastUrl)) {
if (podcast.getEpisodeCount() > 0) {
// Limit episode list to a low item number
final List<Episode> episodes = podcast.getEpisodes().subList(0,
podcast.getEpisodeCount() < EPISODE_LIST_LIMIT ?
podcast.getEpisodeCount() : EPISODE_LIST_LIMIT);
for (Episode episode : episodes)
items.add(episodeToMediaItem(episode));
}
// Items ready, let task send results
latch.countDown();
}
}
@Override
public void onPodcastLoadFailed(Podcast podcast, LoadPodcastTask.PodcastLoadError code) {
if (podcast.equalByUrl(loadingPodcastUrl))
latch.countDown();
}
};
@Override
protected void onPreExecute() {
// Needs to run on UI thread
podcastManager.addLoadPodcastListener(listener);
podcastManager.load(podcastManager.findPodcastForUrl(loadingPodcastUrl));
}
@Override
protected Void doInBackground(Void... params) {
try {
latch.await();
} catch (InterruptedException e) {
cancel(true);
}
return null;
}
@Override
protected void onPostExecute(Void aVoid) {
podcastManager.removeLoadPodcastListener(listener);
result.sendResult(items);
}
};
currentTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
}
项目:Podcatcher-Deluxe-Android-Studio
文件:PodcastBrowserService.java
private void onLoadRoot(final Result<List<MediaItem>> result) {
this.currentTask = new PodcastBrowserAsyncTask() {
@Override
protected Void doInBackground(Void... params) {
try {
episodeManager.blockUntilEpisodeMetadataIsLoaded();
} catch (InterruptedException e) {
cancel(true);
}
// Add Downloads entry
if (episodeManager.getDownloadsSize() > 0)
items.add(new MediaItem(new MediaDescription.Builder()
.setMediaId(DOWNLOADS_ROOT)
.setTitle(getString(R.string.downloads))
.setSubtitle(getResources().getQuantityString(R.plurals.episodes,
episodeManager.getDownloadsSize(), episodeManager.getDownloadsSize()))
.build(), MediaItem.FLAG_BROWSABLE));
// Build list of podcasts
final List<Podcast> podcasts = podcastManager.getPodcastList();
for (Podcast podcast : podcasts) {
final int episodeCount = podcast.getEpisodeCount();
final MediaDescription.Builder mediaDescription = new MediaDescription.Builder()
.setMediaId(podcast.getUrl())
.setTitle(podcast.getName())
.setSubtitle(episodeCount > 0 ? getResources()
.getQuantityString(R.plurals.episodes, episodeCount, episodeCount) : null);
if (podcast.hasLogoUrl())
mediaDescription.setIconUri(Uri.parse(podcast.getLogoUrl()));
items.add(new MediaItem(mediaDescription.build(), MediaItem.FLAG_BROWSABLE));
}
return null;
}
@Override
protected void onPostExecute(Void aVoid) {
result.sendResult(items);
}
};
currentTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
}
项目:Podcatcher-Deluxe-Android-Studio
文件:PodcastBrowserService.java
private void onLoadPodcast(final Result<List<MediaItem>> result, final String podcastUrl) {
this.currentTask = new PodcastBrowserAsyncTask() {
/**
* Thread sync latch used to wait for podcast loading
*/
private CountDownLatch latch = new CountDownLatch(1);
/**
* The feed URL we are currently waiting for. Needs to
* be a member because we have to update it onPodcastMoved()
*/
private String loadingPodcastUrl = podcastUrl;
private OnLoadPodcastListener listener = new OnLoadPodcastListener() {
@Override
public void onPodcastLoadProgress(Podcast podcast, Progress progress) {
// pass
}
@Override
public void onPodcastMoved(Podcast podcast, String newUrl) {
if (podcast.equalByUrl(loadingPodcastUrl))
loadingPodcastUrl = newUrl;
}
@Override
public void onPodcastLoaded(Podcast podcast) {
// Make sure we got the right podcast
if (podcast.equalByUrl(loadingPodcastUrl)) {
if (podcast.getEpisodeCount() > 0) {
// Limit episode list to a low item number
final List<Episode> episodes = podcast.getEpisodes().subList(0,
podcast.getEpisodeCount() < EPISODE_LIST_LIMIT ?
podcast.getEpisodeCount() : EPISODE_LIST_LIMIT);
for (Episode episode : episodes)
items.add(episodeToMediaItem(episode));
}
// Items ready, let task send results
latch.countDown();
}
}
@Override
public void onPodcastLoadFailed(Podcast podcast, LoadPodcastTask.PodcastLoadError code) {
if (podcast.equalByUrl(loadingPodcastUrl))
latch.countDown();
}
};
@Override
protected void onPreExecute() {
// Needs to run on UI thread
podcastManager.addLoadPodcastListener(listener);
podcastManager.load(podcastManager.findPodcastForUrl(loadingPodcastUrl));
}
@Override
protected Void doInBackground(Void... params) {
try {
latch.await();
} catch (InterruptedException e) {
cancel(true);
}
return null;
}
@Override
protected void onPostExecute(Void aVoid) {
podcastManager.removeLoadPodcastListener(listener);
result.sendResult(items);
}
};
currentTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
}