簡體   English   中英

如何在按下后退按鈕或按下其他音頻按鈕時停止mediaPlayer?

[英]How to stop mediaPlayer when back button is pressed or other audio button is pressed?

我遇到了android編程問題。 我想告訴你這個問題。 我有幾個按鈕。 當我們點擊它們時,播放器正在運行。 但是在前一個聲音結束后聲音沒有播放。 此外,當我們按下后退按鈕時,它等待聲音結束,然后執行后退按鈕的功能。

我添加了onBackPressed和onPause。 但是在第一次音頻播放后節目失敗了。

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.ImageButton;
public class officeSounds extends AppCompatActivity implements View.OnClickListener{

    ImageButton sofitukker,millieturner,jacobbanks,jameshersey;
    MediaPlayer mp;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //fullscreen - start
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                WindowManager.LayoutParams.FLAG_FULLSCREEN);
        //fullscreen - end
        setContentView(R.layout.activity_office_sounds);

        sofitukker=findViewById(R.id.sofitukker);
        sofitukker.setOnClickListener(this);
        millieturner=findViewById(R.id.millieturner);
        millieturner.setOnClickListener(this);
        jacobbanks=findViewById(R.id.jacobbanks);
        jacobbanks.setOnClickListener(this);
        jameshersey=findViewById(R.id.jameshersey);
        jameshersey.setOnClickListener(this);
    }
    public void onClick(View view){
        switch(view.getId()){
            case R.id.sofitukker:
                mp = MediaPlayer.create(this, R.raw.sofitukkersound);
                break;
            case R.id.millieturner:
                mp = MediaPlayer.create(this, R.raw.millieturnersound);
                break;
            case R.id.jacobbanks:
                mp = MediaPlayer.create(this, R.raw.jacobbankssound);
                break;
            case R.id.jameshersey:
                mp = MediaPlayer.create(this, R.raw.jamesherseysound);
                break;
            default:
                return;
        }

        mp.start();
        while (mp.isPlaying()) {
        }
        mp.release();

    }
}

我想在切換后退按鈕和不同的聲音時停止前一個聲音。

編輯:當我將switch-case語句添加到while (mp.isPlaying()) { //here }

應用程序不期望聲音結束。 結合聲音。 在按下第一個聲音后按下第二個聲音時,在按下第一個聲音之前播放第二個聲音。 所以這兩個聲音在一起播放了一段時間。

您可以嘗試在每次單擊屏幕時添加mp.release(),以便自動釋放播放媒體:

public void onClick(View view){
    mp.release();
    switch(view.getId()){
        case R.id.sofitukker:
            mp = MediaPlayer.create(this, R.raw.sofitukkersound);
            break;
        case R.id.millieturner:
            mp = MediaPlayer.create(this, R.raw.millieturnersound);
            break;
        case R.id.jacobbanks:
            mp = MediaPlayer.create(this, R.raw.jacobbankssound);
            break;
        case R.id.jameshersey:
            mp = MediaPlayer.create(this, R.raw.jamesherseysound);
            break;
        default:
            return;
    }

並在后退方法上添加它(或者如果你不需要保持mp,則更喜歡mp.stop()):

@Override
public void onBackPressed() {
mp.release();
}

MediaPlayer Android

暫無
暫無

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

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