簡體   English   中英

應用關閉時如何停止MediaPlayer的聲音?

[英]How to stop the sound of my MediaPlayer when the app closes?

我有三個問題。

  1. 當我切換/關閉應用程序/活動時,如何停止MediaPlayer的聲音?

  2. 當我按下sound2時,如何使sound1停止?

  3. 如何停止並在一個按鈕上播放聲音? 我的意思是,當我按一次button1時,聲音開始,當我再次按他時,聲音停止,依此類推。

我已經嘗試過了,但是沒有用。

這是我的MainActivity:

import android.media.MediaPlayer;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;

public class MainActivity extends AppCompatActivity {


        Button button1;
        Button button2;
        boolean w;
        boolean b;

        private MediaPlayer mp;

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            button1 = (Button) findViewById(R.id.button1);
            button2= (Button) findViewById(R.id.button2);
            w = true;
            b = true;
    //Button1
            button1.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    if(b == true){
                    mp= MediaPlayer.create(MainActivity.this, R.raw.song1);
                    mp.start();
                        b = false;
                }else{
                        mp.stop();
                        b = true;
                    }

                }
            });
    //Button 2
            button2.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    if(w == true){

                        mp= MediaPlayer.create(MainActivity.this, R.raw.sound2);
                        mp.start();
                        w = false;
                    }else{
                        mp.stop();
                        w = true;

                }}
            });
        }
    //Stopping the sound when switching or closing the App
        @Override
        public void onPause() {
            mp.stop();
            super.onPause();
        }



}

你能告訴我如何解決我的問題嗎?

我是Android Studio的新手,對於我的英語不好,抱歉:)

答案似乎很簡單:保留對媒體播放器的引用。 就目前而言,您每次都創建一個新的MediaPlayer。 但是您還應該注意MediaPlayer的狀態,這很挑剔。

采取以下示例流程:

  • 啟動應用程序 > [mp = null,b = false,w = false]
  • 單擊按鈕1 > [mp = instance1,b = true,w = false]> [實例1正在播放]
  • 單擊按鈕2 > [mp = instance2,b = true,w = true]> [instance1在播放,instance2在播放]
  • 單擊按鈕1 > [mp = instance2,b = false,w = true]> [instance1正在播放,instance2已停止]
  • 暫停應用程序 > [mp = instance2,b = false,w = true]> [instance1正在播放,instance2已停止]

暫停時釋放()媒體播放器也很重要

首先請參閱本文https://developer.android.com/guide/topics/media/mediaplayer.html#mediaplayer

1。

public void onDestroy() {
     if (mp!=null) {
          mp.stop();
          mp.release();
     }
}

2。

//Stop media player
mp.stop();
// Set data source of sound 2
mp.setDataSource(url2);
mp.prepare(); 
mp.start();

3。

//Pause the sound
mp.pause();
//Resume the sound
mp.start();

暫無
暫無

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

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