媒体播放器声音不重叠

Mediaplayer sound does not overlap

当您单击按钮时,它会将总和加 5 并发出声音。 问题是重复点击的时候加5但是声音不重叠

请看下面的代码:

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

    final MediaPlayer plussound = MediaPlayer.create(basic_2.this, R.raw.plus);    

    Button plus5b = (Button)findViewById(R.id.button);
    plus5b.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            plussound.start();
            for (int i = 1; i <= 5; i++) {
                counterValue++;
            }
            counterdown.setText(String.valueOf(counterValue));
        }
    });
}

如果你想要声音覆盖,你需要如下代码:

Button plus5b = (Button)findViewById(R.id.button);
plus5b.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        for (int i = 1; i <= 5; i++) {
            counterValue++;
        }
        counterdown.setText(String.valueOf(counterValue));
        plussound.start();
    }
});

声音方法需要在 for 循环内部而不是外部的原因是当它在外部并且单击按钮时它只会关闭一次因为每次用户单击它时不会重复该操作.

一个MediaPlayer一次只能播放一个声音,所以你需要为每个声音创建一个新的MediaPlayer,所以在onClick方法里面创建。还要确保在播放声音后删除它(使用 MediaPlayer.OnCompletionListener)以避免出现内存问题。

Button plus5b = (Button)findViewById(R.id.button);
plus5b.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        MediaPlayer mediaPlayer = MediaPlayer.create(basic_2.this, R.raw.plus);    
        // Adding an onCompletionListener to ensure the MediaPlayer releases the memory after playing
        plussound.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
            @Override
            public void onCompletion(MediaPlayer mediaPlayer) {
                mediaPlayer.release();
                mediaPlayer = null;
           }
        });
        mediaPlayer.start();

        for (int i = 1; i <= 5; i++) {
            counterValue++;
        }
        counterdown.setText(String.valueOf(counterValue));
    }
});