使用Android Youtube api,我想在我的应用程序主活动中播放两个视频而不使用片段,我们对这个有多个Youtube播放器在一个活动中有同样的问题,但没有可接受的答案,请帮助我们。
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,我查找了文档,看起来每个活动只能有一个YouTubeView,因为它们之间的绑定。
所以我可以提供另一个建议,使用YouTubePlayerFragment或SupportYouTubePlayerFragment。它应该有自己的生命周期(未经测试)。
要在一项活动中实现两个或多个YouTube播放器,您需要使用YouTubeThumbnailView(这是一个ImageView)来显示预览图像列表。当用户触摸拇指时,您将重定向到全屏视频播放器。
看看这个项目。