java - 检查并查看是否正在播放声音,等待它完成然后播放另一个

标签 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.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”),如果声音正在播放我希望程序等待它完成开始紧随其后的另一个声音。 但是现在我的代码不播放任何声音

最佳答案

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

其次,而不是使用 while(oursong.isPlaying()) { display.setText("开始"); ;您必须使用 setOnCompletionListener 方法注册 OnCompletionListener。播放歌曲时将调用 endCompletion。像这样;

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

onComplete里面应该重置文本“完成”

关于java - 检查并查看是否正在播放声音,等待它完成然后播放另一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18544215/

相关文章:

java - 尝试使用用户输入创建矩阵时出现编译错误。 java

java - Activity 启动后导致应用程序崩溃

android - 即使MediaPlayer已经在播放声音,如何在单击按钮时播放声音?

java - 遍历图像

java - 当我尝试使用 awt 机器人输入 java 时,什么也没输出,我做错了什么?

java - 预先存在的 vb.net/sql 服务器桌面 crud 应用程序的智能手机可访问性的选择

android - Android在xml中设置ImageView源时会自动使用inJustDecodeBounds吗?

java - 优化sqlite应用程序启动

audio - mp3文件和Vue-loader

javascript - 优化 iOS Web App 的音频