2015-08-20 99 views
1

我有兩個屏幕Main.javaHome.javaMain.java有按鈕點擊用戶登錄。更改屏幕後停止MediaPlayer

Main.java上登錄按鈕用戶點擊後是什麼樣的事情發生順序:

  1. 按鈕播放聲音。
  2. 憑據與Microsoft SQL Server的數據庫進行匹配
  3. 啓動一個新的意向Home.java

Home.javaonCreate(Bundle),我創建了一個新的線程在後臺播放的聲音:

// Media Player 
Runnable backgroundSound = new Runnable() { 
    @Override 
     public void run() { 
      MediaPlayer mediaPlayer1= MediaPlayer.create(Home.this, R.raw.welcome_message); 
     mediaPlayer1.start(); 
      MediaPlayer mediaPlayer2= MediaPlayer.create(Home.this, R.raw.welcome_tone); 
     mediaPlayer2.start(); 
     } 
}; 

Thread media = new Thread(backgroundSound); 
media.start(); 
// Media Player 

但,如果我按下返回鍵,這個聲音繼續播放。即使我退出應用程序,此聲音仍會繼續播放。我應該怎麼做,以便如果屏幕更改(後退按鈕,退出應用程序或其他應用程序,電話事件的中間按鈕發生),則應停止此聲音。

知道這是線程media.stop可能不是好的選擇。由於suspend()stop()都已棄用,我該怎麼辦?中斷這個線程?或者是其他東西?什麼應該停止這個線程在屏幕的變化(我上面討論)

注意:我沒有粘貼太多的源代碼(所有java文件)。我認爲可能沒有必要在這裏提供所有不需要的內容。如果它缺少任何細節,請告訴我我將編輯該問題。

回答

2

首先,給你的媒體播放器的靜態媒體播放器參考objects.Then實現onBackPressed()你activity.in該方法寫下面提供的代碼中。

if(mediaPlayer1.isPlaying()) 
mediaPlayer1.stop(); 
if(mediaPlayer2.isPlaying()) 
mediaPlayer2.stop(); 

完整代碼會是這樣

public class Home extends Activity { 
public static MediaPlayer mediaPlayer1,mediaPlayer2; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    // Media Player 
Runnable backgroundSound = new Runnable() { 
@Override 
    public void run() { 
     mediaPlayer1= MediaPlayer.create(Home.this, R.raw.welcome_message); 
    mediaPlayer1.start(); 
     mediaPlayer2= MediaPlayer.create(Home.this, R.raw.welcome_tone); 
    mediaPlayer2.start(); 
    } 
}; 

Thread media = new Thread(backgroundSound); 
media.start(); 
// Media Player 

} 
@Override 
public void onBackPressed() 
{ 
    if(mediaPlayer1.isPlaying()) 
mediaPlayer1.stop(); 
if(mediaPlayer2.isPlaying()) 
mediaPlayer2.stop(); 
    super.onBackPressed();  
} 
} 
-2

您可以使用活動生命週期。就像暫停你停止媒體播放器一樣。並且在簡歷中你再次播放它。 您也可以覆蓋活動中的onbackpressed功能。一旦點擊了返回,就停止了音樂。

@Override 
    public void onBackPressed() 
    { 
     // TODO stop the music 
     super.onBackPressed();  
    } 
+0

請你給我一個完整的答案。這只是後面的按鈕按下。另外我問我應該觸摸線程?或MediaPlayer()? – AbhimanyuAryan