使用YouTube Android SDK,当出现错误时自动跳过YouTube视频

6
我正在尝试构建一个播放视频列表的应用程序。它是基于API示例的非常基本的实现。
使用player.loadVideos方法加载播放列表(video_ids数组)。使用PlayerStateChangeListener的实现跟踪播放器状态的更改。
一切都很顺利,视频会按顺序播放(如预期)。
当播放视频出现错误时(例如YouTubePlayer.ErrorReason.NOT_PLAYABLE),它会在PlayerStateChangeListeneronError方法中捕获,并在那里调用player.next()以转到下一个视频。
但是,一旦出现错误,player.next就无法正常工作-基本上一旦出现错误,我就无法进行任何操作来跳过该视频并播放在播放列表中排队的下一个视频。
1个回答

1
当YouTubePlayer播放播放列表时出现玩家错误,调用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);
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接