【问题标题】:Playing different youtube videos using Youtube Player API使用 Youtube Player API 播放不同的 youtube 视频
【发布时间】:2013-05-12 15:30:50
【问题描述】:

我正在使用适用于 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(我测试过)中输入一次,因此只播放第一个视频。如何解决这个问题?

【问题讨论】:

  • 我尝试在列表视图类型的应用程序中制作播放器,但失败了。当您在列表视图中播放第一个视频时,您是否尝试过滚动列表?在我的手机中,当我滚动时,它会在列表视图中的任何地方留下一个黑色矩形,你也会发生同样的事情吗?
  • 嗯,不,我没有得到同样的错误,在点击视频后,列表视图继续正常工作!

标签: android youtube-api android-youtube-api


【解决方案1】:

您只需初始化一次,并将播放器存储在您的类中

@Override
public void onInitializationSuccess(Provider arg0, YouTubePlayer player, boolean wasRestored) {
     if(!wasRestored){       
         mPlayer = player;
     }
}

之后,您可以通过调用该函数在mPlayer 上播放任何 Youtube URL。

public void playVideo(String url) {
     if( mPlayer != null ) {
          mPlayer.cueVideo(url);
     }
}

【讨论】:

  • thnq,这对我有帮助,我会在评论中发布我的代码。
  • 非常有帮助,搜索了很多找到它。
【解决方案2】:

查看最新版本的 YouTube API 示例

YouTube API Samples

我认为这个示例可能对您有用:

youtube-api-samples

【讨论】:

【解决方案3】:

点击时,只需 scrollListToPosition(position) & 如果该项目是列表中的最后一项,那么您可以通过计算项目的顶部来提供填充。 或者使用 YouTubeStandalonePlayer 播放视频

Intent intent = YouTubeStandalonePlayer.createVideoIntent((Activity) mContext, YOU_TUBE_API_KEY, VideoID[getLayoutPosition()], 100, false, true);

mContext.startActivity(intent);

【讨论】:

    【解决方案4】:

    我知道它已经很老了,但是这篇文章之后的人们的解决方案。

    首先初始化 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);
            }
    

    【讨论】:

      猜你喜欢
      • 2015-12-31
      • 1970-01-01
      • 2015-12-23
      • 2017-05-19
      • 2016-04-26
      • 2016-12-23
      • 2017-09-20
      • 2020-06-10
      • 1970-01-01
      相关资源
      最近更新 更多