Android Studio - 媒体播放器:如何防止声音重叠?

Android Studio - Media Player: How do i prevent sound from overlapping?

package com.example.sound;

import androidx.appcompat.app.AppCompatActivity;

import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class MainActivity extends AppCompatActivity {

    Button b1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        b1 = findViewById(R.id.b1);

        b1.setOnClickListener(new View.OnClickListener()
        {
            @Override
            public void onClick(View v)
            {
                sound();
            }
        });

    }

    public  void sound()
    {
        MediaPlayer mp = MediaPlayer.create(this,R.raw.mesa);
        mp.start();
    }
    
}

现在,当我在播放音频时按下按钮,第二个音频出现并与第一个音频重叠。

如果我垃圾邮件按钮,会有很多音频相互重叠。

我只想一次播放一个音频。如果我再次按下按钮,第一个音频应该停止。

我该怎么做?我看过一些其他相关的 post 但无济于事。

    public  void sound()
{
    MediaPlayer mp = MediaPlayer.create(this,R.raw.mesa);
    mp.start();
}

似乎每次用户单击按钮时您都在创建一个新的 MediaPlayer 实例 - 这就是为什么您会听到多种声音。您应该创建一个 MediaPlayer 的全局实例,然后在 onClick 方法中您应该停止已经播放的音频并开始一个新的。