在活动中显示多个YouTube视频

时间:2017-06-29 13:03:12

标签: android android-fragments android-linearlayout android-youtube-api appcompatactivity

我有一个文章对象,我想在我的Activity中显示。一篇文章可以有: -Text(s):1至少或几个 - 图像:0或几个 -Video(s):0或几个

每个元素可以在文章中的任何位置,例如: - 文字/图像/文字/视频 - 视频/图像/视频/文本 - 等......

在解析我的文章后,我以编程方式添加了我需要的内容:TextView,ImageView或VideoView(youtube或jwplayer)。实际上它适用于图像和文本,但我不知道如何在同一个活动中添加多个YouTube视频:

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.post);

    linearLayout = (LinearLayout) findViewById(R.id.llayout_article);

    // Get article to display it
    Intent intent = getIntent();
    Article article = intent.getParcelableExtra("articleDetails");

    //add ImageView & TextView
    for (View view : article.getContentSplitInViews(this)) {
        this.linearLayout.addView(view);
    }


    YouTubePlayerSupportFragment frag =
            (YouTubePlayerSupportFragment) getSupportFragmentManager().findFragmentById(R.id.youtube_fragment);
    src="g2mmUzNSeDM";
    frag.initialize(apiKey, this);
    YouTubePlayerSupportFragment frag2 =
            (YouTubePlayerSupportFragment) getSupportFragmentManager().findFragmentById(R.id.youtube_fragment2);
    src = "nCgQDjiotG0";
    frag2.initialize(apiKey, this);
}

@Override
public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer youTubePlayer, boolean wasRestored) {
    if (!wasRestored) {
        youTubePlayer.setPlayerStyle(YouTubePlayer.PlayerStyle.DEFAULT);
        youTubePlayer.loadVideo(src);
        youTubePlayer.play();
    }
}

@Override
public void onInitializationFailure(YouTubePlayer.Provider provider, YouTubeInitializationResult youTubeInitializationResult) {
    // YouTube error
    String errorMessage = youTubeInitializationResult.toString();
    Toast.makeText(getApplicationContext(), errorMessage, Toast.LENGTH_LONG).show();
    Log.d("errorMessage:", errorMessage);
}

我当前的xml:

<?xml version="1.0" encoding="utf-8"?>
<ScrollView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:id="@+id/scrollViewId"
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <LinearLayout
        android:id="@+id/llayout_article"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:fitsSystemWindows="true"
        android:orientation="vertical">

        <fragment
            android:name="com.google.android.youtube.player.YouTubePlayerSupportFragment"
            android:id="@+id/youtube_fragment"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"/>


        <fragment
            android:name="com.google.android.youtube.player.YouTubePlayerSupportFragment"
            android:id="@+id/youtube_fragment2"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"/>

    </LinearLayout>
</ScrollView>

稍后我想在我的XML中为在文章对象中找到的每个视频添加programmaticaly片段标记。

实际上,我的活动中有2个玩家,但只有一个玩家正在播放视频,每个玩家的动作(播放/暂停/全屏)都会在2个玩家中做同样的事情。

android youtube api

1 个答案:

答案 0 :(得分:0)

首先,您必须在onInitializationSuccess()中通过id区分两个提供者。

如果提供者是frag1,请调用youTubePlayer.loadVideo(&#34; g2mmUzNSeDM&#34;) 否则,如果提供者是frag2,请调用youTubePlayer.loadVideo(&#34; nCgQDjiotG0&#34;)

(如果您的活动扩展了YoutubeBaseActivity,您可以通过编程方式将YouTubePlayerView添加到您的布局中)