如何使用youtube播放器API播放频道视频列表中的下一个视频

时间:2020-09-13 16:04:54

标签: java android-studio youtube-api playback

我已经使用Youtube Data API从YouTube导入了频道列表,并使用Youtube Player API进行了播放。但是,当我应用PlayerStateChange Listener和Playback Event Listener时,它不起作用。

public class VideoPlayActivity extends YouTubeBaseActivity {
    YouTubePlayerView youTubePlayerView;
    YouTubePlayer.OnInitializedListener onInitializedListener;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_video_play);

        Intent i=getIntent();

        youTubePlayerView= findViewById(R.id.youtube_player);
        final String url = getIntent().getStringExtra("videoId");

        youTubePlayerView = findViewById(R.id.youtube_player);
        onInitializedListener = new YouTubePlayer.OnInitializedListener() {
            @Override
            public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer youTubePlayer, boolean b) {

                youTubePlayer.loadVideo(url);
            }

            @Override
            public void onInitializationFailure(YouTubePlayer.Provider provider, YouTubeInitializationResult youTubeInitializationResult) {

            }
        };

        youTubePlayerView.initialize("AIzaSyA1_spJ4XGWOCekBLCsSAgWderHHl_46m0", onInitializedListener);
    }
    private YouTubePlayer.PlaybackEventListener playbackEventListener= new YouTubePlayer.PlaybackEventListener() {
        @Override
        public void onPlaying() {

        }

        @Override
        public void onPaused() {

        }

        @Override
        public void onStopped() {

        }

        @Override
        public void onBuffering(boolean b) {

        }

        @Override
        public void onSeekTo(int i) {

        }
    };

    YouTubePlayer.PlayerStateChangeListener playerStateChangeListener=new YouTubePlayer.PlayerStateChangeListener() {
        @Override
        public void onLoading() {

        }

        @Override
        public void onLoaded(String s) {

        }

        @Override
        public void onAdStarted() {

        }

        @Override
        public void onVideoStarted() {

        }

        @Override
        public void onVideoEnded() {

        }

        @Override
        public void onError(YouTubePlayer.ErrorReason errorReason) {

        }
    };
}

频道vieos的JSON解析如下

   private void displayVideos ()
    {
        RequestQueue requestQueue= Volley.newRequestQueue(this);
        StringRequest stringRequest=new StringRequest(Request.Method.GET, url, new Response.Listener<String>() {


            @Override
            public void onResponse(String response) {
                try {
                    JSONObject jsonObject = new JSONObject(response);
                    JSONArray jsonArray = jsonObject.getJSONArray("items");
                    for (int i = 0; i < jsonArray.length(); i++) {
                        JSONObject jsonObject1 = jsonArray.getJSONObject(i);
                        if (jsonObject1.has("id")){
                            JSONObject jsonVideoId=jsonObject1.getJSONObject("id");
                            if (jsonVideoId.has("kind")){
                                if(jsonVideoId.getString("kind").equals("youtube#video")){
                                    JSONObject jsonObjectSnippet = jsonObject1.getJSONObject("snippet");
                                    JSONObject jsonObjectDefault=jsonObjectSnippet.getJSONObject("thumbnails").getJSONObject("medium");

                                    String video_id=jsonVideoId.getString("videoId");

                                    VideoDetails vd=new VideoDetails();

                                    vd.setVideoId(video_id);
                                    vd.setTitle(jsonObjectSnippet.getString("title"));
                                    vd.setDescription(jsonObjectSnippet.getString("description"));
                                    vd.setUrl(jsonObjectDefault.getString("url"));

                                    videoDetailsoArrayList.add(vd);
                                }
                                //  recyclerView.setAdapter(adapter);
                                // adapter.notifyDataSetChanged();
                            }
                        }
                    }
                }catch (JSONException e) {
                    e.printStackTrace();
                }

                recyclerView.setLayoutManager(new LinearLayoutManager(getApplicationContext()));
                recyclerView.addItemDecoration(new DividerItemDecoration(getApplicationContext(),LinearLayoutManager.VERTICAL));
                adapter= new adapter(getApplicationContext(),videoDetailsoArrayList);
                recyclerView.setAdapter(adapter);
            }

        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                Toast.makeText(getApplicationContext(),error.getMessage(), LENGTH_LONG).show();
            }
        });
        requestQueue.add(stringRequest);
    }
}

我希望在youtube播放器启动时像正常youtube播放器一样显示下一个视频按钮或上一个视频按钮。播放器看起来像这样。 Youtube Player

0 个答案:

没有答案