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);
}