【发布时间】:2016-11-28 01:28:55
【问题描述】:
我有一个片段,它有一堆 android 视图来播放各种媒体项目 - 图像、mp4 视频、pdf。
我想支持YouTubePlayerView 支持播放 youtube 视频。我知道使用 YouTubePlayerFragment,但我想将 YouTubePlayerView 放在普通片段中。我如何做到这一点?
【问题讨论】:
标签: android youtube-api android-youtube-api
我有一个片段,它有一堆 android 视图来播放各种媒体项目 - 图像、mp4 视频、pdf。
我想支持YouTubePlayerView 支持播放 youtube 视频。我知道使用 YouTubePlayerFragment,但我想将 YouTubePlayerView 放在普通片段中。我如何做到这一点?
【问题讨论】:
标签: android youtube-api android-youtube-api
这周我也有同样的问题。我的应用程序中只有 1 个Activity,其他所有内容都是片段,所以我不想使用扩展YouTubeActivity 的文档方法只是为了使用YouTubePlayerView。
相反,如果您继续阅读文档,请注明 YouTubeFragment contains a YouTubePlayer。所以我最终将片段视为一个视图,并在MyFragment 的布局中明确放置了一个<fragment> 标签。在onCreateView 的MyFragment 期间,YouTubeFragment 为我实例化,然后我可以获得对 YouTubeFragment AND YouTubePlayer 的引用。
来自MyFragment 的onCreateView 我称这个助手为initYouTube()。
注意:您真正想要的是YouTubePlayer,而不是YouTubePlayerView,并且像许多编程任务一样,有无数种方法可以完成工作。然后,我保留对播放器和 YT 片段的引用,以供以后在 MyFragment 的生命周期中使用。
private void initYouTube() {
if (youTubePlayerFragment == null) {
youTubePlayerFragment = (YouTubePlayerFragment) getFragmentById(R.id.youtube_frag);
youTubePlayerFragment.initialize(getString(R.string.api_key), new YouTubePlayer.OnInitializedListener() {
@Override
public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer player, boolean wasRestored) {
Log.i("Detail","YouTube Player onInitializationSuccess");
// Don't do full screen
player.setFullscreen(false);
if (!wasRestored) {
youTubePlayer = player;
cueVideoIfNeeded();
}
}
@Override
public void onInitializationFailure(YouTubePlayer.Provider provider, YouTubeInitializationResult youTubeInitializationResult) {
Log.i("Detail", "Failed: "+youTubeInitializationResult);
if (youTubeInitializationResult.isUserRecoverableError()) {
youTubeInitializationResult.getErrorDialog(getMainActivity(), RECOVERY_DIALOG_REQUEST).show();
} else {
callToast(youTubeInitializationResult.toString(), true);
}
}
});
}
}
YouTubeFragment XML,嵌套在 MyFragment 的布局 XML 中。
<RelativeLayout>..../>
<fragment
android:id="@+id/youtube_frag"
android:name="com.google.android.youtube.player.YouTubePlayerFragment"
android:layout_below="@id/detail_animal_action_relative_layout"
android:layout_width="match_parent"
android:layout_height="150dp"
android:layout_marginTop="5dp"
android:layout_marginBottom="5dp"
/>
<TextView>...../>
【讨论】: