Raf*_*fag 4 android youtube-api android-youtube-api
I\xc2\xb4m 使用适用于 Android 的 Youtube Player API 来播放视频,选择其中之一listview(视频之前已解析 json 等)。当我只能播放第一个视频时出现问题listview我选择的第一个视频时,问题就出现了,因为当我单击 listView 的不同元素时,播放器视图不会改变。这是重要的代码:
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 }\nRun Code Online (Sandbox Code Playgroud)\n\n我知道问题的出现是因为播放器无法初始化两次,因此执行只进入一次OnInitializationSucess(我测试过),因此只播放第一个视频。如何解决这个问题呢?
您只需要初始化一次,并将播放器存储在您的类中
@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)
| 归档时间: |
|
| 查看次数: |
9493 次 |
| 最近记录: |