【发布时间】:2018-02-15 12:31:53
【问题描述】:
我在 edittext 中粘贴了一个视频链接。我希望在更改链接并在其后单击按钮时重新加载视频。编辑文本采用 http 地址,对其进行相应拆分以获得 YouTube 播放器的确切链接。每次更改地址时,传递给 YouTube 播放器的地址字符串也会更改。
我记录了它,它工作正常。但问题是,当我第一次粘贴 URL 时,它可以正常工作并加载视频,但是一旦加载了视频,我更改了 URL 并按下按钮播放视频,什么也没有发生。我猜播放器视图已初始化,我无法重新初始化它?有没有办法重新初始化它?
这是我的 XML 代码:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/search"
android:hint="Paste the link here"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Play Video"
android:layout_centerHorizontal="true"
android:layout_below="@+id/search"
android:id="@+id/play"/>
<com.google.android.youtube.player.YouTubePlayerView
android:id="@+id/youtube"
android:layout_below="@+id/play"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#fff"/>
</RelativeLayout>
而java文件的代码是:
public class YoutubeMain extends YouTubeBaseActivity implements YouTubePlayer.OnInitializedListener {
public static final String API_KEY = "api key";
public String VIDEO_ID;
Button playvideo;
EditText videoid;
public Boolean clicked;
YouTubePlayer myoutubeplayer;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.youtube);
videoid=(EditText)findViewById(R.id.search);
playvideo=(Button)findViewById(R.id.play);
playvideo.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
clicked=true;
if (videoid.getText().toString().contains("="))
{
Log.d("Youtube","the id is:"+videoid.getText().toString());
int start = videoid.getText().toString().indexOf("=");
String suffix = videoid.getText().toString().substring(start + 1);
Log.d("Youtube","the id after cropping is: "+suffix);
VIDEO_ID=suffix;
}
else
{
Log.d("Youtube","the id is:"+videoid.getText().toString());
int start = videoid.getText().toString().indexOf(".");
String suffix = videoid.getText().toString().substring(start + 4);
Log.d("Youtube","the id after cropping is: "+suffix);
VIDEO_ID=suffix;
}
Log.d("Youtube","Suffix:" +VIDEO_ID);
YouTubePlayerView youTubePlayerView = (YouTubePlayerView) findViewById(R.id.youtube);
youTubePlayerView.initialize(API_KEY, YoutubeMain.this);
}
});
}
@Override
public void onInitializationFailure(Provider provider, YouTubeInitializationResult result) {
Toast.makeText(this, "Failured to Initialize!", Toast.LENGTH_LONG).show();
}
@Override
public void onInitializationSuccess(Provider provider, YouTubePlayer player, boolean wasRestored) {
/** add listeners to YouTubePlayer instance **/
player.setPlayerStateChangeListener(playerStateChangeListener);
player.setPlaybackEventListener(playbackEventListener);
/** Start buffering **/
if (!wasRestored) {
player.cueVideo(VIDEO_ID);
}
Log.d("Youtube","The value of clicked is : "+clicked);
}
private PlaybackEventListener playbackEventListener = new PlaybackEventListener() {
@Override
public void onBuffering(boolean arg0) {
}
@Override
public void onPaused() {
}
@Override
public void onPlaying() {
}
@Override
public void onSeekTo(int arg0) {
}
@Override
public void onStopped() {
}
};
private PlayerStateChangeListener playerStateChangeListener = new PlayerStateChangeListener() {
@Override
public void onAdStarted() {
}
@Override
public void onError(ErrorReason arg0) {
}
@Override
public void onLoaded(String arg0) {
}
@Override
public void onLoading() {
}
@Override
public void onVideoEnded() {
}
@Override
public void onVideoStarted() {
}
};
}
【问题讨论】:
-
为什么要创建新的 YouTubePlayer 播放器;onInitializationSuccess 之前上线??
-
@ArnoldBrown 删除了它。对不起,我的坏事,我只是在试验一些东西,忘了删除
-
现在可以正常工作了吗??
-
不,不是。问题依然存在
-
我插入它是为了解决问题。在我尝试之前存在问题
标签: android youtube-data-api ytplayerview