【问题标题】:Youtube, loads and plays a list of videosYoutube,加载和播放视频列表
【发布时间】:2014-04-29 16:31:14
【问题描述】:

我坚持执行以下 youtube 方法。

public abstract void loadVideos (List<String> videoIds)

Loads and plays a list of videos.

基本上这是我的代码的一部分。 我的最终目标是当用户单击视频播放的列表项或它自动播放所有三个视频时。 谁能帮帮我。

 private static final String1[] arry = { 
          new String1("Androidify App", "irH3OSOskcE", false),
          new String1("Chrome Speed Tests", "nCgQDjiotG0", false),
          new String1("Playlist: Google I/O 2012", "PL56D792A831D0C362", true)};




  private static final String KEY_CURRENTLY_SELECTED_ID = "currentlySelectedId";

  private YouTubePlayerView youTubePlayerView;
  private YouTubePlayer player;
  private ArrayAdapter<String1> videoAdapter1;

  private ListView videoChooser1;
  private StringBuilder logString;
  private MyPlayerStateChangeListener playerStateChangeListener;
  private MyPlaylistEventListener playlistEventListener;

  private int currentlySelectedPosition;
  private String currentlySelectedId;

  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.player_controls_demo);

    youTubePlayerView = (YouTubePlayerView) findViewById(R.id.youtube_view);
    videoChooser1 = (ListView) findViewById(R.id.listView1);
    logString = new StringBuilder();
    videoAdapter1 = new ArrayAdapter<String1>(this, android.R.layout.simple_list_item_1, arry);
    videoChooser1.setAdapter(videoAdapter1);
    videoChooser1.setOnItemClickListener(this);
    youTubePlayerView.initialize(DeveloperKey.DEVELOPER_KEY, this);

    playlistEventListener = new MyPlaylistEventListener();
    playerStateChangeListener = new MyPlayerStateChangeListener();

  }


@Override
  public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer player,
      boolean wasRestored) {
    this.player = player;
    player.setPlaylistEventListener(playlistEventListener);
    player.setPlayerStateChangeListener(playerStateChangeListener);

    if (!wasRestored) {
      playVideoAtSelection();
    }
    }

  @Override
  protected YouTubePlayer.Provider getYouTubePlayerProvider() {
    return youTubePlayerView;
  }

  private void playVideoAtSelection() {
    String1 selectedEntry = videoAdapter1.getItem(currentlySelectedPosition);
    if (selectedEntry.id != currentlySelectedId && player != null) {
      currentlySelectedId = selectedEntry.id;
      if (selectedEntry.isPlaylist) {
      player.loadPlaylist(selectedEntry.id);
      } else {
        player.loadVideo(selectedEntry.id);
        player.loadVideos(List<String>,selectedEntry.id);
      }
    }
  }

      @Override 
      public void onItemClick(AdapterView<?> parent, View view, int pos, long id)
      { 
          currentlySelectedPosition = pos;
            playVideoAtSelection(); 
      }




  @Override
  protected void onSaveInstanceState(Bundle state) {
    super.onSaveInstanceState(state);
    state.putString(KEY_CURRENTLY_SELECTED_ID, currentlySelectedId);
  }

  @Override
  protected void onRestoreInstanceState(Bundle state) {
    super.onRestoreInstanceState(state);
    currentlySelectedId = state.getString(KEY_CURRENTLY_SELECTED_ID);
  }

  private void log(String message) {
        logString.append(message + "\n");
       // eventLog.setText(logString);
      }

 private final class MyPlaylistEventListener implements PlaylistEventListener {
    @Override
    public void onNext() {
      log("NEXT VIDEO");
    }

    @Override
    public void onPrevious() {
      log("PREVIOUS VIDEO");
    }

    @Override
    public void onPlaylistEnded() {
      log("PLAYLIST ENDED");
    }
  }
 private final class MyPlayerStateChangeListener implements PlayerStateChangeListener {
        String playerState = "UNINITIALIZED";

        @Override
        public void onLoading() {
          playerState = "LOADING";
          log(playerState);
        }

        @Override
        public void onLoaded(String videoId) {
          playerState = String.format("LOADED %s", videoId);
          log(playerState);
        }

        @Override
        public void onAdStarted() {
          playerState = "AD_STARTED";
          log(playerState);
        }

        @Override
        public void onVideoStarted() {
          playerState = "VIDEO_STARTED";
          log(playerState);
        }

        @Override
        public void onVideoEnded() {
          playerState = "nCgQDjiotG0";
          log(playerState);
        }

        @Override
        public void onError(ErrorReason arg0) {
            // TODO Auto-generated method stub

        }
      }
  private static final class String1 {

        public final String title;
        public final String id;
        public final boolean isPlaylist;

        public String1(String title, String videoId, boolean isPlaylist) {
          this.title = title;
          this.id = videoId;
          this.isPlaylist = isPlaylist;
        }

        @Override
        public String toString() {
          return title;
        }

      }

【问题讨论】:

    标签: android string list youtube-api android-youtube-api


    【解决方案1】:

    经过几次尝试,我发现它可以部分工作以防万一其他人需要它

    @Override
      public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer player,
          boolean wasRestored) {
        this.player = player;
        player.setPlaylistEventListener(playlistEventListener);
        player.setPlayerStateChangeListener(playerStateChangeListener);
    
        if (!wasRestored) {
            ArrayList arrayList = new ArrayList();
            arrayList.add((Object)("irH3OSOskcE"));
            arrayList.add((Object)("nCgQDjiotG0"));
            arrayList.add((Object)("irH3OSOskcE"));
            player.loadVideos((List)(arrayList));
          //playVideoAtSelection();
        }
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-02
      • 2017-03-30
      • 1970-01-01
      • 2014-09-24
      • 1970-01-01
      • 2018-03-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多