java - Android youtube API 在一项主要 Activity 中播放两个或多个 Youtube 播放器

标签 java android json youtube android-youtube-api

使用 Android Youtube api 我想在我的应用程序主 Activity 中播放两个视频而不使用 fragment 我们对此有同样的问题 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 初始化被他们调用相同的 video2 初始化覆盖

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

通过这个:

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

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

最佳答案

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

但可能存在扩展 YouTubeBaseActivity 的问题我查阅了文档,看起来每个 Activity 只能有一个 YouTubeView,因为它们之间存在绑定(bind)。

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

关于java - Android youtube API 在一项主要 Activity 中播放两个或多个 Youtube 播放器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22189802/

相关文章:

c# - 如何在我的 Web 服务 POST 方法中反序列化 JSON

java - 如何从 finance.yahoo.com 检索 BSE/NSE 上市股票的价格

android - 使用 Retrofit 和 Fabric 来自 Android 应用程序的 OAuth 请求问题

java - 游戏的暂停/恢复功能

java - 即使 containsKey() 返回 true,从 HashMap 检索时也会出现空指针异常

ios - Alamofire:参数未传递到服务器

javascript - 将两个 JSON 值合并为一个数组

java - 如何在 Apache Camel 中窃听时检查文件是否存在

java - 更改 nimbus 上的桌面 Icon.width

java - 读取文件时出错 : java. io.FileNotFoundException:打开失败:ENOENT(没有此类文件或目录)