2016-07-14 119 views
-1

我在我的應用程序中有兩個活動。第一個(MainActivity.java)有一個按鈕來調用活動二(Player.java),第二個有音頻和一個停止按鈕。音頻是否正在播放? (Android)

我現在面臨的主要問題是:

當我點擊從一開始第二個活動,它進入另一個活動。 當我編程時,它會自動啓動音頻(我希望它自動啓動)。我按停止音頻停止。然後再回到MainActivity再次調用第二個activity(Player.java)它可以正常工作。它再次正確啓動音頻。當我按下音頻繼續播放時,一切正常。 (這就是我想要的)。

但是,如果按回不停止音頻,並啓動第二活動(Player.java)再次,它再次開始聲音不停止第一個。同一曲目播放兩次。

我想一次只玩一個軌道。如果有任何其他音頻正在播放,請停止播放,當我再次開始該活動時。

這裏是我的代碼:

MainActivity.java

package com.test.myapp; 

import android.app.*; 
import android.os.*; 
import android.content.*; 
import android.widget.*; 
import android.view.*; 

public class MainActivity extends Activity { 
    Button btn; 

    @Override 
    public void onCreate(Bundle savedIntanceState) { 
     super.onCreate(savedIntanceState); 
     setContentView(R.layout.activity_main); 

     btn = (Button) findViewById(R.id.button); 

     public void clicked(View v){ 
      if (v.getId() == R.id.button){ 
       Intent i = new Intent (MainActivity.this, player.class); 
       startActivity(i); 
      } 
     } 
    } 
} 

Player.java

package com.test.myapp; 

import android.app.*; 
import android.os.*; 
import android.content.*; 
import android.widget.*; 
import android.view.*; 
import android.media.*; 

public class player extends Activity { 
    Button stop; 
    MediaPlayer audio; 

    @Override 
    public void onCreate(Bundle savedIntanceState) { 
     super.onCreate(savedIntanceState); 
     setContentView(R.layout.player); 

     stop= (Button) findViewById(R.id.stop); 
     audio = MediaPlayer.create(getBaseContext(), R.raw.myAudio); 
     audio.start(); 

     public void stop(View v){ 
      if (v.getId() == R.id.stop){ 
       audio.stop(); 
       audio = MediaPlayer.create(getBaseContext(), R.raw.myAudio); 
      } 
     } 
    } 
} 

回答

0

你應該在玩家活動的onPause調用audio.stop()方法當用戶按下後退按鈕時。播放音頻是一項獨立於您的活動生命週期的系統服務。

所以,你的活動接近停止音頻並在重新啓動時,再次發揮。