我正在实现一个音乐应用程序。我在用Exoplayer2
我正在尝试使用DynamicConcatenatingMediaSource
动态向播放列表添加和删除项目。
这是我的实现。
public void initMusicPlayer(){
if (songs !=null)
{
MediaSource mediaSource;
ArrayList<MediaSource> sources = new ArrayList<>();
MusicItem song;
for (int i=0;i< songs.size();i++)
{
song = songs.get(i);
mediaSource = buildMediaSource(Uri.parse(song.getMusicUrl()));
sources.add(mediaSource);
}
dynamicMediaSource = new DynamicConcatenatingMediaSource();
dynamicMediaSource.addMediaSources(sources);
exoPlayer.prepare(dynamicMediaSource,false,false);
exoPlayer.addListener(this);
if (currentPlayingSongIndex == -1)
{
exoPlayer.setPlayWhenReady(false);
}
else
{
exoPlayer.seekTo(currentPlayingSongIndex,0);
exoPlayer.setPlayWhenReady(true);
}
}
}
public void addItemToPlaylist(MusicItem song,boolean shouldPlay){
long position = exoPlayer.getContentPosition();
MediaSource mediaSource = buildMediaSource(Uri.parse(song.getMusicUrl()));
dynamicMediaSource.addMediaSource(mediaSource);
exoPlayer.prepare(dynamicMediaSource,false,false);
if (shouldPlay)
{
exoPlayer.seekTo(currentPlayingSongIndex,0);
}
else
{
exoPlayer.seekTo(currentPlayingSongIndex,position);
}
}
但是,这个实现不起作用。它什么都不播放。
上面的代码有什么问题?
另外,如何将项目动态添加到播放列表?上述addItemToPlaylist
工作会吗?