使用YouTube播放器API播放不同的YouTube视频
我使用Android的Youtube播放器API播放视频,在listview
(视频先前已解析JSON等)中选择其中一个视频。问题出现在我只能播放我选择的listview
的第一个视频时,导致播放器视图不会在我点击listView的不同元素时发生改变。这是重要的代码:使用YouTube播放器API播放不同的YouTube视频
lista.setOnItemClickListener(new OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> pariente, View view,
int posicion, long id) {
Video chosen = (Video)pariente.getItemAtPosition(posicion);
String urlVideo = chosen.getUrl();
String aux = getYoutubeVideoId(urlVideo);
URL_VIDEO = aux;
youTubeView.initialize(KEY_DEVELOPER, new YouTubePlayer.OnInitializedListener() {
@Override
public void onInitializationFailure(Provider arg0,
YouTubeInitializationResult arg1) {
// TODO Auto-generated method stub
Log.d("DEPURANDO: ERROR AL VISUALIZAR", URL_VIDEO);
}
@Override
public void onInitializationSuccess(Provider arg0,
YouTubePlayer player, boolean wasRestored) {
// TODO Auto-generated method stub
if(!wasRestored){
Log.d("YOUTUBE", "URL: " + URL_VIDEO);
player.cueVideo(URL_VIDEO);
}
}
});
}
我理解的问题就来了,因为玩家无法初始化两次,所以执行只在OnInitializationSucess
输入一次(我测试),因此只播放第一视频。如何解决这个问题呢?
这是行不通的 – Cristiana214 2014-03-04 10:16:17
这个教程对我工作Cristiana214,我希望它也可以帮助你:http://androiddev101.com/episode-12-youtube-it-all-night-long/ – Rafag 2014-03-27 11:19:21
你只需要初始化一次,并存储您所在班级的玩家
@Override
public void onInitializationSuccess(Provider arg0, YouTubePlayer player, boolean wasRestored) {
if(!wasRestored){
mPlayer = player;
}
}
之后,您可以通过调用该函数在您的mPlayer
上播放任何YouTube网址。
public void playVideo(String url) {
if(mPlayer != null) {
mPlayer.cueVideo(url);
}
}
thnq,这帮了我,我我将在我的代码发表评论。 – 2016-06-15 21:26:46
非常有帮助,搜索很多找到它。 – Panache 2017-09-21 14:00:11
在点击,只是scrollListToPosition(位置) &如果该项目在列表中最后一项,那么你可以通过计算项目的顶部给予填充。 或者使用YouTubeStandalonePlayer播放视频
Intent intent = YouTubeStandalonePlayer.createVideoIntent((Activity) mContext, YOU_TUBE_API_KEY, VideoID[getLayoutPosition()], 100, false, true);
mContext.startActivity(intent);
我知道这是很老了,但是对于人们解决这个帖子之后到来。
首先初始化YoutubePlayerView并将YoutubePlayer对象存储在类变量中。
youTubeView.initialize(KEY_DEVELOPER, new YouTubePlayer.OnInitializedListener() {
@Override
public void onInitializationFailure(Provider arg0,
YouTubeInitializationResult arg1) {
// TODO Auto-generated method stub
Log.d("DEPURANDO: ERROR AL VISUALIZAR", URL_VIDEO);
}
@Override
public void onInitializationSuccess(Provider arg0,
YouTubePlayer player, boolean wasRestored) {
youtubePlayer = player;
}
});
这里“youtubePlayer”是一个YoutubePlayer类的变量。
现在的onclick监听器里加载视频youtubePlayer
lista.setOnItemClickListener(new OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> pariente, View view,
int posicion, long id) {
Video chosen = (Video)pariente.getItemAtPosition(posicion);
String urlVideo = chosen.getUrl();
String aux = getYoutubeVideoId(urlVideo);
URL_VIDEO = aux;
youtubePlayer.load(URL_VIDEO);
}
我试图使在列表视图类型的应用,这是我非常失败的球员。当你在列表视图中播放你的第一个视频时,你有没有试过滚动列表?在我的手机中,当我滚动时,它在列表视图中的任何地方都会留下一个黑色的矩形,同样的事情发生在你身上吗? – 2013-05-13 03:26:33
嗯,不,我没有得到同样的错误,在cliking ina视频后listview保持正常工作! – Rafag 2013-05-13 22:15:21