4

我想要完成的是我单击一个按钮,然后根据子字符串播放声音。

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

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 编程的新手,所以我这样做对吗?

因为我真正想要的是程序在单击按钮时继续检查声音是否正在播放(在本例中为“我们的声音”),如果声音正在播放,我希望程序等待它完成以开始另一个声音之后。但现在我的代码没有播放任何声音

4

1 回答 1

7

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

其次,而不是使用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内部应该重置文本“完成”

于 2013-08-31T04:03:09.760 回答