2013-08-31 2 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, так что я собираюсь сделать это правильно?

Поскольку я действительно хочу, чтобы программа продолжала проверять, воспроизводится ли звук (в данном случае «oursound») при нажатии кнопки, и если звук воспроизводится, я хочу, чтобы программа дождалась ее завершения до запустить другой звук сразу же после того, как он. Но теперь мой код играть это не распространяется никаких звуков

+0

Нет необходимости включать [андроида] в заголовке. Вот для чего нужны теги :) – ChiefTwoPencils

ответ

5

Прежде всего, вам нужно остановить медиаплеер, прежде чем отпустить его (ее безопаснее.)

Во-вторых, вместо того, чтобы использовать while(oursong.isPlaying()) { display.setText("start"); }; вам нужно зарегистрировать OnCompletionListener, используя метод setOnCompletionListener. Когда будет воспроизводиться песня, будет вызываться endCompletion. Например:

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

и внутри onComplete должен сбросить текст «не сделано»

+0

Спасибо, еще один вопрос: как сделать большой цикл? Цикл while, который не зависит от кнопки, поэтому я могу постоянно проверять определенные значения. – John

Смежные вопросы