簡體   English   中英

Mediaplayer聲音不重疊

[英]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));
        }
    });
}

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

如果要覆蓋聲音,則需要以下代碼:

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循環內而不是外部的原因是,當它在外部並單擊按鈕時,它僅關閉一次,因為用戶每次單擊時都不會重復操作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM