使用 Youtube Player API 播放不同的 YouTube 视频

Raf*_*fag 4 android youtube-api android-youtube-api

I\xc2\xb4m 使用适用于 Android 的 Youtube Player API 来播放视频,选择其中之一listview(视频之前已解析 json 等)。当我只能播放第一个视频时出现问题listview我选择的第一个视频时,问题就出现了,因为当我单击 listView 的不同元素时,播放器视图不会改变。这是重要的代码:

\n\n
 lista.setOnItemClickListener(new OnItemClickListener(){\n\n            @Override\n            public void onItemClick(AdapterView<?> pariente, View view, \n                    int posicion, long id) {\n\n                Video chosen = (Video)pariente.getItemAtPosition(posicion); \n                String urlVideo = chosen.getUrl();\n                String aux = getYoutubeVideoId(urlVideo);\n                URL_VIDEO = aux;\n\n                youTubeView.initialize(KEY_DEVELOPER, new YouTubePlayer.OnInitializedListener() {\n\n                    @Override\n                    public void onInitializationFailure(Provider arg0,\n                            YouTubeInitializationResult arg1) {\n                        // TODO Auto-generated method stub\n                        Log.d("DEPURANDO: ERROR AL VISUALIZAR", URL_VIDEO);\n\n                    }\n\n                    @Override\n                    public void onInitializationSuccess(Provider arg0,\n                            YouTubePlayer player, boolean wasRestored) {\n                        // TODO Auto-generated method stub\n                        if(!wasRestored){       \n                            Log.d("YOUTUBE", "URL: " + URL_VIDEO);\n                            player.cueVideo(URL_VIDEO);\n                        }\n                    }\n                });\n            }\n
Run Code Online (Sandbox Code Playgroud)\n\n
\n\n

我知道问题的出现是因为播放器无法初始化两次,因此执行只进入一次OnInitializationSucess(我测试过),因此只播放第一个视频。如何解决这个问题呢?

\n

Ely*_*lye 6

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

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

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

public void playVideo(String url) {
     if( mPlayer != null ) {
          mPlayer.cueVideo(url);
     }
}
Run Code Online (Sandbox Code Playgroud)