2013-08-31 22 views
2

我想说的是我点击一个按钮,然后播放基于子串的声音。检查并看看有没有声音在播放,等待它完成然后播放另一个

这是我按下按钮,当前的代码:

display.setText("start"); 
thefull = thef.getText().toString(); 
for(int a=0;a<thefull.length();a++) 
{ 
letter=thefull.substring(a,a+1); 
if(letter=="m") 
{ 
oursong = MediaPlayer.create(MainActivity.this, R.raw.m); 
oursong.start(); 
while(oursong.isPlaying()) 
{ 
display.setText("start"); 
} 
oursong.release(); 
} 
else if(letter=="a") 
{ 
oursong = MediaPlayer.create(MainActivity.this, R.raw.a); 
oursong.start(); 
while(oursong.isPlaying()) 
{ 
display.setText("start"); 
} 
oursong.release(); 
}  
display.setText("done"); 

,但由于某种原因,当我点击我的按钮没有播放声音。 我也是新来的android和java编程,所以我正确地做这个?

因为我真正想要的是让程序继续检查声音是否正在播放(在这种情况下是“ouround”),当按钮被点击时,如果声音正在播放,我希望程序等待它完成开始另一种声音的权利后, 但现在我的代码doesn't发出任何声音

+0

无需包括[机器人]在您的标题。这就是标签:) – ChiefTwoPencils

回答

5

首先,你需要释放它之前停止媒体播放器(它的安全。)

二,而不是使用while(oursong.isPlaying()) { display.setText("start"); };你必须使用setOnCompletionListener方法注册OnCompletionListener,当播放歌曲时,endCompletion将被调用,像这样;

MediaPlayer mp = new MediaPlayer(); 
mp.setOnCompletionListener(new MediaPlayer.OnCompletionListener(){ 
public void onCompletion(MediaPlayer player) { 
    player.release();   
}}); 

onComplete内应该重置文本“做”

+0

谢谢你,还有一个问题:我如何做一个很大的while循环? 一个独立于按钮的while循环,所以我可以不断地检查某些值。 – John