Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 使用youtube播放器API播放不同的youtube视频_Android_Youtube Api_Android Youtube Api - Fatal编程技术网

Android 使用youtube播放器API播放不同的youtube视频

Android 使用youtube播放器API播放不同的youtube视频,android,youtube-api,android-youtube-api,Android,Youtube Api,Android Youtube Api,我正在使用Youtube播放器API for Android播放视频,在列表视图中选择其中一个(视频以前是通过解析json等获得的)。当我只能播放我选择的listview的第一个视频时,问题就出现了,因为当我点击listview的不同元素时,播放器视图不会改变。这是重要的代码: lista.setOnItemClickListener(new OnItemClickListener(){ @Override public void onItem

我正在使用Youtube播放器API for Android播放视频,在
列表视图中选择其中一个(视频以前是通过解析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);
                        }
                    }
                });
            }
lista.setOnItemClickListener(新的OnItemClickListener(){
@凌驾
公共无效onItemClick(AdapterView客户、视图、,
int posicion,长id){
选择的视频=(视频)pariente.getItemAtPosition(位置);
字符串urlVideo=selected.getUrl();
字符串aux=getYoutubeVideoId(urlVideo);
URL_VIDEO=aux;
初始化(KEY_DEVELOPER,new youtubeplyer.OnInitializedListener()){
@凌驾
public void onInitializationFailure(提供程序arg0,
YouTube初始化结果(arg1){
//TODO自动生成的方法存根
Log.d(“DEPURANDO:ERROR AL VISUALIZAR”,URL\U视频);
}
@凌驾
public void onInitializationSuccess(提供程序arg0,
YouTubeplyer播放器,布尔值已恢复){
//TODO自动生成的方法存根
如果(!已还原){
Log.d(“YOUTUBE”,“URL:+URL\u视频”);
播放器.视频提示(URL_视频);
}
}
});
}


我理解这个问题是因为播放器不能初始化两次,所以执行只能在
oninitializationsuccess
(我测试过)中输入一次,因此只能播放第一个视频。如何解决这个问题?

查看YouTube API示例的最新版本

我认为此示例对您很有用:


检查YouTube API示例的最新版本

我认为此示例对您很有用:


只需初始化一次,然后将播放器存储在类中

@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);
     }
}

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

@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);
     }
}

单击后,只需滚动列表位置(位置) &如果该项是列表中的最后一项,则可以通过计算项的顶部来进行填充。 或者使用YouTubeStandalonePlayer播放视频

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

mContext.startActivity(intent);

单击后,只需滚动列表位置(位置) &如果该项是列表中的最后一项,则可以通过计算项的顶部来进行填充。 或者使用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 listener中,将视频加载到YouTubeplyer中

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);
        }
lista.setOnItemClickListener(新的OnItemClickListener(){
@凌驾
公共无效onItemClick(AdapterView客户、视图、,
int posicion,长id){
选择的视频=(视频)pariente.getItemAtPosition(位置);
字符串urlVideo=selected.getUrl();
字符串aux=getYoutubeVideoId(urlVideo);
URL_VIDEO=aux;
加载(URL_视频);
}

我知道它很老了,但这是一个为关注这篇文章的人提供的解决方案

首先初始化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 listener中,将视频加载到YouTubeplyer中

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);
        }
lista.setOnItemClickListener(新的OnItemClickListener(){
@凌驾
公共无效onItemClick(AdapterView客户、视图、,
int posicion,长id){
选择的视频=(视频)pariente.getItemAtPosition(位置);
字符串urlVideo=selected.getUrl();
字符串aux=getYoutubeVideoId(urlVideo);
URL_VIDEO=aux;
加载(URL_视频);
}

我曾尝试在listview类型的应用程序中制作播放器,但失败惨重。当您在listview中播放第一个视频时,您是否尝试过滚动列表?在我的手机中,当我滚动时,列表视图中的每一处都会留下一个黑色矩形,您是否也会遇到同样的情况?嗯,不,在点击v后,我没有收到相同的错误ideo listview一直工作正常!我曾尝试在listview类型的应用程序中制作一个播放器,但失败得很惨。当你在listview中播放第一个视频时,你是否尝试过滚动列表?在我的手机中,当我滚动时,它会在listview中到处留下一个黑色矩形,你也会发生同样的事情吗?嗯,不,我不明白我的错误,在剪辑了一段视频后,listview继续正常工作!这个教程对我很有用Cristiana214,我希望它对你也有帮助:这个教程对我很有用Cristiana214,我希望它对你也有帮助:thnq,这对我有帮助,我将在评论中发布我的代码。非常有帮助,搜索了很多找到它。thnq,这对我有帮助,我将在评论中发布我的代码。非常有帮助,找了很多来找它。