Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 检查并查看是否正在播放声音,等待声音结束,然后再播放另一个声音_Java_Android_Audio - Fatal编程技术网

Java 检查并查看是否正在播放声音,等待声音结束,然后再播放另一个声音

Java 检查并查看是否正在播放声音,等待声音结束,然后再播放另一个声音,java,android,audio,Java,Android,Audio,我想要完成的是点击一个按钮,然后播放一个基于子串的声音 这是我按下按钮的当前代码: 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

我想要完成的是点击一个按钮,然后播放一个基于子串的声音

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

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");
display.setText(“开始”);
thefull=off.getText().toString();

对于(int a=0;a首先,您需要在释放媒体播放器之前停止它(它更安全。)

其次,不要使用
while(oursong.isplay())
{
display.setText(“开始”);
}
;您必须使用setOnCompletionListener方法注册OnCompletionListener。播放歌曲时,将调用endCompletion。类似这样

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

并且在页面内部应该重置文本“完成”

无需在标题中包含[android]。这就是标签的用途:)谢谢,还有一个问题:我如何创建一个大while循环?一个独立于按钮的while循环,因此我可以不断检查某些值。