媒体播放器声音不重叠

时间:2018-02-22 18:19:00

标签: java android audio android-mediaplayer

当您点击按钮时,它会向总和中添加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));
        }
    });
}

2 个答案:

答案 0 :(得分:1)

一个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));
    }
});

答案 1 :(得分:0)

如果您想要声音叠加,则需要以下代码:

{{1}}

声音方法需要在for循环中而不是在for循环内部的原因是因为当它在外面并且单击按钮时它只会熄灭一次,因为每次用户单击它时都不会重复该操作。 / p>