java - 如何停止已经播放的声音并立即开始另一个

标签 java android audio

当用户先前选择的声音正在播放时,如何停止该声音并立即播放新选择的声音?到目前为止,我的代码只会停止新声音,但用户必须再次选择声音才能播放。

public class MainActivity extends Activity {
    public MediaPlayer mediaPlayer = null;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button a = (Button) findViewById(R.id.First);
        a.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                if (mediaPlayer == null) {
                    mediaPlayer = MediaPlayer.create(MainActivity.this, R.raw.firstsound);
                    mediaPlayer.stop();
                }
                else {
                    mediaPlayer.start();
                    mediaPlayer = null;
                }
            }
        }
        );
        Button b = (Button) findViewById(R.id.Second);
        b.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                if (mediaPlayer == null) {
                    mediaPlayer = MediaPlayer.create(MainActivity.this, R.raw.secondsound);
                    mediaPlayer.stop();
                }
                else {
                    mediaPlayer.start();
                    mediaPlayer = null;
                }
            }
        }
        );

如果有帮助的话,我正在制作一个包含 30 多种声音的音板。我需要对我的代码进行哪些(我认为是轻微的)更改?任何帮助将不胜感激!

最佳答案

public class MainActivity extends Activity {

    public MediaPlayer mediaPlayer = null;
    public Boolean playing=false;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Button a = (Button) findViewById(R.id.First);
        a.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {

                (playing)mediaPlayer.stop();
                mediaPlayer = MediaPlayer.create(MainActivity.this, R.raw.firstsound);
                mediaPlayer.start();
                            playing=true;
            }

        });

        Button b = (Button) findViewById(R.id.Second);
        b.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                (playing)mediaPlayer.stop();
                mediaPlayer = MediaPlayer.create(MainActivity.this, R.raw.firstsound);
                mediaPlayer.start();
                            playing=true;
            }
        });
    }
}

关于java - 如何停止已经播放的声音并立即开始另一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15856074/

相关文章:

java - Jsoup.connect().get() 仅获取 Android 上的部分 html 文件

java - servlet 中的请求调度程序 : forward method not preserving request attribute

java - Visual Studio 人员的 Eclipse 之眼

java - 使用 Toast 监控传入的短信

datetime - VBScript-运行文件的日期和时间约束

java - 使用多线程处理对 java 数组进行分区和分析

java - driver.manage.wait(long timeout) 和显式等待之间的区别

ios - 应用程序运行时播放音频

c# - 通过 ANDROID APP 使用本地托管的 SOAP 服务

c# - 使用C#播放MP3文件