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 方法中您应该停止已经播放的音频并开始一个新的。
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 方法中您应该停止已经播放的音频并开始一个新的。