Android youtube API在一个主要活动中播放两个或更多Youtube播放器

时间:2014-03-05 06:01:29

标签: java android json youtube android-youtube-api

使用Android Youtube api我想在我的应用主要活动中播放两个视频,而不使用片段我们对此Multiple Youtube players in one activity有同样的问题但是没有可接受的答案,请帮助我们。

activity_main.xml中

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>

<com.google.android.youtube.player.YouTubePlayerView
    android:id="@+id/video1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />

<com.google.android.youtube.player.YouTubePlayerView
    android:id="@+id/video2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />

MainActivity.java

    package com.apps.you;
    import android.os.Bundle;
import com.google.android.youtube.player.YouTubeBaseActivity;
import com.google.android.youtube.player.YouTubeInitializationResult;
import com.google.android.youtube.player.YouTubePlayer;
import com.google.android.youtube.player.YouTubePlayer.Provider;
import com.google.android.youtube.player.YouTubePlayerView;

public class MainActivity extends YouTubeBaseActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

    ((YouTubePlayerView) findViewById(R.id.video1)).initialize("AIzaSyBmb9Yqu9vEBXjNOrBmZZ__6s12RH5RSv0", new YouTubePlayer.OnInitializedListener() {
        @Override
        public void onInitializationSuccess(Provider provider1, YouTubePlayer player1, boolean restored1) {
            if (!restored1) {
            player1.cueVideo("Daa38ruXHxE");
            }
        }

        @Override
        public void onInitializationFailure(Provider provider1, YouTubeInitializationResult result1) {
        }
    });

    ((YouTubePlayerView) findViewById(R.id.video2)).initialize("AIzaSyBmb9Yqu9vEBXjNOrBmZZ__6s12RH5RSv0", new YouTubePlayer.OnInitializedListener() {

        public void onInitializationSuccess(Provider provider, YouTubePlayer player, boolean restored) {

            if (!restored) {
        player.loadVideo("ctQAPiojDKE");
            }
        }


        public void onInitializationFailure(Provider provider, YouTubeInitializationResult result) {
        }
    });
}
}

这个问题只有一个视频在最后播放,video1初始化被视频2初始化所覆盖,他们称之为相同

  .initialize(new YouTubePlayer.OnInitializedListener(){});

由此:

((YouTubePlayerView) findViewById(R.id.video1)).initialize(new
    YouTubePlayer.OnInitializedListener(){});

((YouTubePlayerView) findViewById(R.id.video2)).initialize(new
    YouTubePlayer.OnInitializedListener(){});

2 个答案:

答案 0 :(得分:0)

也许是微不足道的答案。但是,对于你的用例,可以接受第二个youtube播放器的init来成功回调第一个吗?你试过吗?这应该是一个合理的解决方法。

但可能有一个问题是扩展YouTubeBaseActivity我查找了文档,看起来每个活动只能有一个YouTubeView,因为它们之间存在绑定。

所以我可以提供其他建议,改为使用YouTubePlayerFragment或SupportYouTubePlayerFragment。它应该有自己的生命周期(未经过测试)。

答案 1 :(得分:0)

要在一项活动中获得两个或更多youtube播放器,您需要使用YouTubeThumbnailView(它是一个ImageView)来显示预览图像列表。当用户触摸拇指时,您将重定向到全屏视频播放器。

Check out this project.