我正在使用Android的Youtube Player API来播放视频,选择其中一个listview
(视频以前解析过json等等)。当我只能播放我选择的listview
的第一个视频时会出现问题,因为当我点击listView的不同元素时,播放器视图不会改变。这是重要的代码:
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
(我测试过)中输入一次,因此只播放第一个视频。如何解决这个问题?
答案 0 :(得分:4)
您只需要初始化一次,然后将播放器存储在班级
中@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);
}
}
答案 1 :(得分:3)
答案 2 :(得分:0)
点击,只需scrollListToPosition(位置) &安培;如果该项目是列表中的最后一项,则可以通过计算项目顶部来提供填充。 或者使用YouTubeStandalonePlayer播放视频
Intent intent = YouTubeStandalonePlayer.createVideoIntent((Activity) mContext, YOU_TUBE_API_KEY, VideoID[getLayoutPosition()], 100, false, true);
mContext.startActivity(intent);
答案 3 :(得分:0)
我知道它已经很老了,但是对于那些在这篇文章之后的人来说也是一个解决方案。
首先初始化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;
}
});
这里&#34; youtubePlayer&#34;是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);
}