Автоматически пропускать видео в YouTube при возникновении ошибки с помощью YouTube Android SDK
Я пытаюсь создать приложение, которое воспроизводит список видео. Это очень простая реализация, основанная на примерах API.
Плейлист (массив video_ids) загружается с помощью player.loadVideos
метод. Изменения в состоянии игрока отслеживаются с помощью реализации PlayerStateChangeListener
,
Все отлично работает, и видео воспроизводится вплотную (как и ожидалось).
При возникновении ошибки при воспроизведении видео (например, YouTubePlayer.ErrorReason.NOT_PLAYABLE
), он попадает в плен onError
метод PlayerStateChangeListener
и я звоню player.next()
там перейти к следующему видео.
Тем не мение, player.next
не работает после того, как произошла ошибка - в основном, когда есть ошибка, я ничего не могу сделать, чтобы пропустить это видео и воспроизвести следующее, поставленное в очередь в списке воспроизведения.
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);
}