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

Posted

技术标签:

【中文标题】Android youtube API 在一个主要活动中播放两个或多个 Youtube 播放器【英文标题】:Android youtube API play two or more Youtube players in one main activity 【发布时间】:2014-04-07 00:59:58 【问题描述】:

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

activity_main.xml

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

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

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

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 初始化被他们调用的 video2 初始化覆盖

  .initialize(new YouTubePlayer.OnInitializedListener());

通过这个:

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

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

【问题讨论】:

你解决了这个问题吗? Eliran Tutia 据我所知,即使使用片段,我也只能在每个活动中一次播放和初始化一个视频。 【参考方案1】:

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

但是可能有一个问题是扩展 YouTubeBaseActivity 我查找了文档,并且由于它们之间的绑定,每个活动似乎只能有一个 YouTubeView。

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

【讨论】:

试图从第一个成功回调中调用第二个 youtube 播放器的 init。由于限制不工作=( 使用 youtubeplayerfragments 也不允许它工作【参考方案2】:

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

Check out this project.

【讨论】:

以上是关于Android youtube API 在一个主要活动中播放两个或多个 Youtube 播放器的主要内容,如果未能解决你的问题,请参考以下文章

在 Android TV 中使用 Youtube API

如何在Android Studio中使用YouTube API在Android应用中列出视频

Youtube API v3 使用 webView 在 Android 上创建 Youtube 频道

YouTube Android API:YouTubePlayerFragment 加载微调器

限制为Android时,YouTube API密钥会出现500错误

如何在 android 的 Youtube API V3 中按频道 ID 获取 Youtube 直播?