音频是否正在播放? (Android)

问题描述:

我在我的应用程序中有两个活动。第一个(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); 
      } 
     } 
    } 
} 

你应该在玩家活动的onPause调用audio.stop()方法当用户按下后退按钮时。播放音频是一项独立于您的活动生命周期的系统服务。

所以,你的活动接近停止音频并在重新启动时,再次发挥。