2013-08-31 25 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