使用Android的Youtube API,我想打两个视频在我的应用程序的主要活动,而无需使用片段,我们有同样的问题与此的多个YouTube播放器在一个活动但没有可接受的解答,请帮助我们。
activity_main.xml
< LinearLayout中的xmlns:机器人=http://schemas.android.com/apk/res/android
机器人:layout_width =match_parent
机器人:layout_height =match_parent
机器人:方向=垂直
>
< com.google.android.youtube.player.YouTubePlayerView
机器人:ID =@ + ID / VIDEO1
机器人:layout_width =WRAP_CONTENT
机器人:layout_height =WRAP_CONTENT/>
< com.google.android.youtube.player.YouTubePlayerView
机器人:ID =@ + ID /视频2
机器人:layout_width =WRAP_CONTENT
机器人:layout_height =WRAP_CONTENT/>
MainActivity.java
包com.apps.you;
进口android.os.Bundle;
进口com.google.android.youtube.player.YouTubeBaseActivity;
进口com.google.android.youtube.player.YouTubeInitializationResult;
进口com.google.android.youtube.player.YouTubePlayer;
进口com.google.android.youtube.player.YouTubePlayer.Provider;
进口com.google.android.youtube.player.YouTubePlayerView;
公共类MainActivity扩展YouTubeBaseActivity {
@覆盖
保护无效的onCreate(包savedInstanceState){
super.onCreate(savedInstanceState);
的setContentView(R.layout.activity_main);
((YouTubePlayerView)findViewById(R.id.video1))。初始化(AIzaSyBmb9Yqu9vEBXjNOrBmZZ__6s12RH5RSv0,新YouTubePlayer.OnInitializedListener(){
@覆盖
公共无效onInitializationSuccess(提供provider1,YouTubePlayer PLAYER1,布尔restored1){
如果(!restored1){
player1.cueVideo(Daa38ruXHxE);
}
}
@覆盖
公共无效onInitializationFailure(提供provider1,YouTubeInitializationResult RESULT1){
}
});
((YouTubePlayerView)findViewById(R.id.video2))。初始化(AIzaSyBmb9Yqu9vEBXjNOrBmZZ__6s12RH5RSv0,新YouTubePlayer.OnInitializedListener(){
公共无效onInitializationSuccess(供应商提供,YouTubePlayer球员,布尔恢复){
如果(!恢复){
player.loadVideo(ctQAPiojDKE);
}
}
公共无效onInitializationFailure(供应商提供,YouTubeInitializationResult结果){
}
});
}
}
这个问题只有一个视频被播放结束时,VIDEO1初始化是overrriden的视频2初始化它们调用相同
.initialize(新YouTubePlayer.OnInitializedListener(){});
本:
((YouTubePlayerView)findViewById(R.id.video1))。初始化(新
YouTubePlayer.OnInitializedListener(){});
((YouTubePlayerView)findViewById(R.id.video2))。初始化(新
YouTubePlayer.OnInitializedListener(){});
解决方案
也许微不足道的答案。但是,对于您的使用情况接受调用第二个YouTube播放器的初始化从第一个成功的回调?您是否尝试过吗?它应该是一个合理的解决办法。
但也有可能是正在扩大YouTubeBaseActivity我抬起头文件的catch,它看起来像有可能是因为他们之间的结合每个活动只有一个YouTubeView。
所以,我可以提供另一种建议,使用YouTubePlayerFragment或SupportYouTubePlayerFragment代替。它应该有自己的生命周期(未测试)。
Using the Android Youtube api i want to play two videos in my app main activity without using fragment we have the same problem with this Multiple Youtube players in one activity but has no acceptable answers yet please help us.
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) {
}
});
}
}
the problem with this is only one video was playing at the end , video1 initialization was overrriden by the video2 initialization they call the same
.initialize(new YouTubePlayer.OnInitializedListener(){});
by this:
((YouTubePlayerView) findViewById(R.id.video1)).initialize(new
YouTubePlayer.OnInitializedListener(){});
((YouTubePlayerView) findViewById(R.id.video2)).initialize(new
YouTubePlayer.OnInitializedListener(){});
解决方案
Maybe trivial answer. But is for your use-case acceptable to call init of second youtube player from success callback of the first one? Have you tried it? It should be a reasonable workaround.
But there might be a catch that is extending YouTubeBaseActivity I looked up documentation, and it looks like there can be only one YouTubeView per activity because of binding between them.
So I can offer another advice, use YouTubePlayerFragment or SupportYouTubePlayerFragment instead. It should have its own lifecycle (not tested).
相关推荐
最新文章