gpt4 book ai didi

android - setOnCompletionListener 仅在第一次检测完成

转载 作者:行者123 更新时间:2023-11-30 00:12:06 24 4
gpt4 key购买 nike

setOnCompletionListener 仅在第一次检测歌曲的完成。在下面的代码中,song1song2 依次播放,但没有播放剩余的歌曲。

我想一首一首地播放歌曲,并在歌曲之间添加一些静音。

MediaPlayer song0=new MediaPlayer();
int track = 0;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
song0=MediaPlayer.create(this,R.raw.song1);
play.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
function();
}
});

song0.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {

@Override
public void onCompletion(MediaPlayer song0) {
track++;
loadsong();

function();
}

});
}
void loadsong()
{

if(track==1) song0=MediaPlayer.create(this,R.raw.song2);
if(track==2) song0=MediaPlayer.create(this,R.raw.song3);
if(track==3) song0=MediaPlayer.create(this,R.raw.song4);
}**strong text**


void function(){
if(track<4) song0.start();
else
song0.stop();

}

最佳答案

问题在于每次需要播放歌曲时都需要创建 MediaPlayer 对象。因此,每次为另一首歌曲创建 MediaPlayer 对象后,都需要设置 OnCompletionListener。

因此,您可以更改代码中的几行来解决问题。

MediaPlayer song0=new MediaPlayer();
int track = 0;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
song0=MediaPlayer.create(this,R.raw.song1);
play.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
function();
}
});

song0.setOnCompletionListener(m_CompletionListener);
}
void loadsong()
{

if(track==1) {
song0=MediaPlayer.create(this,R.raw.song2);
song0.setOnCompletionListener(m_CompletionListener);
}
if(track==2) {
song0=MediaPlayer.create(this,R.raw.song3);
song0.setOnCompletionListener(m_CompletionListener);
}

if(track==3) {
song0=MediaPlayer.create(this,R.raw.song4);
song0.setOnCompletionListener(m_CompletionListener);
}

}**strong text**


void function(){
if(track<4) song0.start();
else
song0.stop();

}
MediaPlayer.OnCompletionListener m_CompletionListener = new MediaPlayer.OnCompletionListener() {

@Override
public void onCompletion(MediaPlayer song0) {
track++;
loadsong();
function();
}

};

另一种实现方式是只创建一个 MediaPlayer 对象,而不是每次都创建 MediaPlayer 对象,调用 setDataSource 函数来播放其他歌曲。如果您需要这种方式的更多细节,我也可以制作示例代码。

希望对您有所帮助!

关于android - setOnCompletionListener 仅在第一次检测完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47990675/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com