使用YouTube Android SDK在发生错误时自动跳过youtube中的视频

时间:2013-08-29 10:26:07

标签: android video onerror android-youtube-api

我正在尝试构建一个播放视频列表的应用。它是基于API样本的非常基本的实现。

使用player.loadVideos方法加载播放列表(video_ids数组)。使用PlayerStateChangeListener的实现跟踪玩家状态的变化。

一切都很好,视频背靠背(如预期的那样)。

当播放视频时出现错误(例如YouTubePlayer.ErrorReason.NOT_PLAYABLE)时,会在onError的{​​{1}}方法中捕获,并在那里调用PlayerStateChangeListener继续下一个视频。

但是,player.next()在出现错误后无法正常工作 - 基本上一旦出现错误,我无法做任何事情会跳过该视频并播放在播放列表中排队的下一个视频

1 个答案:

答案 0 :(得分:0)

当YouTube播放器播放播放列表时发生播放器错误时,调用next()无效。我相信这是因为YouTubePlayer中的错误是无法恢复的。解决方案是使用下一个播放列表索引重新加载播放列表。

因此,要跟踪当前的播放列表索引,

@Override   // YouTubePlayer.PlaylistEventListener
public void onPrevious() 
{
    mPlaylistIndex--;
}

@Override   // YouTubePlayer.PlaylistEventListener
public void onNext() 
{
    mPlaylistIndex++;
}

然后,在onError(),

@Override   // YouTubePlayer.PlayerStateChangeListener
public void onError(YouTubePlayer.ErrorReason errorReason) 
{
    Log.d(TAG, "YouTubePlayer error: " + errorReason);

    // Check if the mContentId is of kind video or playlist,
    // if video, there is nothing you can do, end playback.

    // Check if the mPlaylistIndex is the last video in playlist,
    // if so, there is nothing you can do, end playback.

    mPlaylistIndex++;
    mYouTubePlayer.loadPlaylist(mContentId, mPlaylistIndex, 0);
}