gpt4 book ai didi

android - 在Android上使用Youtube Api播放新视频

转载 作者:行者123 更新时间:2023-12-03 05:31:32 24 4
gpt4 key购买 nike

我正在使用Android Studio开发一个需要Youtube API的应用程序。问题是我想播放视频
每次用户单击“再现”(“播放”)时。所以我研究了如何加载视频,每个人都说要使用该功能
初始化将调用onInitializationSuccess并在此处播放。但是,如果我想加载新视频,则无法解析URL并播放新视频。每当用户单击Reproducir时,我都尝试调用初始化,但在这种情况下,它会触发。

public class AddVideoActivity extends YouTubeBaseActivity implements YouTubePlayer.OnInitializedListener{
private YouTubePlayerView youTubeView;
private EditText urlTxtView;
private Button playButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_add_video);
youTubeView = (YouTubePlayerView) findViewById(R.id.youtube_player_add);
urlTxtView = (EditText) findViewById(R.id.urlYoutube);
playButton = (Button) findViewById(R.id.buttonPlay);
playButton.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View view) {
youTubeView.initialize(Config.YOUTUBE_API_KEY, (YouTubePlayer.OnInitializedListener) view.getContext());
}
});

}

@Override
public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer youTubePlayer, boolean b) {
String url = urlTxtView.getText().toString();
Log.d("1",url );
youTubePlayer.loadVideo("a4NT5iBFuZs");

}

@Override
public void onInitializationFailure(YouTubePlayer.Provider provider, YouTubeInitializationResult result) {
Toast.makeText(this, "ERROR:"+result.toString(), Toast.LENGTH_LONG).show();

}

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


<TextView
android:id="@+id/textView3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/action_add_video"
android:textStyle="normal|bold"
android:textSize="30sp"
android:gravity="center_horizontal"
android:layout_marginBottom="20dp" />

<com.google.android.youtube.player.YouTubePlayerView
android:id="@+id/youtube_player_add"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#fff"/>

<EditText
android:id="@+id/tituloVideo"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:hint="Titulo"
android:inputType="textPersonName" />

<EditText
android:id="@+id/urlYoutube"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:hint="URL o buscar con @youtube"
android:inputType="textPersonName" />

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">

<Button
android:id="@+id/buttonCancelar"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Cancelar" />
<Button
android:id="@+id/buttonPlay"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Reproducir" />
<Button
android:id="@+id/buttonGuardar"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Guardar" />
</LinearLayout>

</LinearLayout>

日志:
W / YouTubeAndroidPlayerAPI:由于播放器顶部的未授权覆盖,导致YouTube视频播放停止。 YouTubePlayerView被android.view.View {a21cb6f V.ED .... ................. 0,0-768,50#102002f android:id / statusBarBackground}遮盖了。底边YouTubePlayerView顶边下方36像素。 。

这里有一个想法的图像:

Picture of Android emulator, the user should introduce an url, clicks on Reproducir and plays the video from the url

最佳答案

如果要重新初始化youtube视频视频 View (如果已先初始化),则需要释放现有的youtube View 。
请检查以下代码
具体来说,我已经更改了“播放”按钮单击上的“初始化”部分

playButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (youTubePlayer != null) {
youTubePlayer.release();
}
youTubeView.initialize("AIzaSyDo9p_Qjy8XRBdFnVOaIx586MzHHLOUopw", (YouTubePlayer.OnInitializedListener) view.getContext());
}
});
整个 Activity 代码
 public class AddVideoActivity extends YouTubeBaseActivity implements YouTubePlayer.OnInitializedListener {
private YouTubePlayerView youTubeView;
private EditText urlTxtView;
private Button playButton;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_add_video);
youTubeView = (YouTubePlayerView) findViewById(R.id.youtube_player_add);

urlTxtView = (EditText) findViewById(R.id.urlYoutube);
playButton = (Button) findViewById(R.id.buttonPlay);
playButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (youTubePlayer != null) {
youTubePlayer.release();
}
youTubeView.initialize(Config.YOUTUBE_API_KEY, (YouTubePlayer.OnInitializedListener) view.getContext());
}
});

}

private YouTubePlayer youTubePlayer;

@Override
public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer youTubePlayer, boolean wasRestored) {
this.youTubePlayer = youTubePlayer;
String url = urlTxtView.getText().toString();
Log.d("1", url);
if (!wasRestored) {/// here videoid you need to pass not entire video URL
youTubePlayer.loadVideo(url);
}


}

@Override
public void onInitializationFailure(YouTubePlayer.Provider provider, YouTubeInitializationResult result) {
Toast.makeText(this, "ERROR:" + result.toString(), Toast.LENGTH_LONG).show();

}
}
要加载视频,您需要传递视频ID而不是视频URL。因此,假设在编辑文本中传递了视频ID,或者如果传递了URL,那么您将从URL获得视频ID并加载视频
this.youTubePlayer = youTubePlayer;
String url = urlTxtView.getText().toString();
Log.d("1", url);
if (!wasRestored) {/// here videoid you need to pass not entire video URL
youTubePlayer.loadVideo(url);
}

和下面的日志

Log: W/YouTubeAndroidPlayerAPI: YouTube video playback stopped due tounauthorized overlay on top of player. The YouTubePlayerView isobscured by android.view.View{a21cb6f V.ED.... ........ 0,0-768,50

102002f android:id/statusBarBackground}. Bottom edge 36 px below YouTubePlayerView's top edge.


你可以引用答案 https://stackoverflow.com/a/29676512/1140237
对于您的情况,此日志...问题与应用程序或 Activity 主题有关。不提供ActionBarTheme解决该错误

关于android - 在Android上使用Youtube Api播放新视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42343389/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com