Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 当我单击退出应用程序时,如何停止mediaplayer?_Java_Android - Fatal编程技术网

Java 当我单击退出应用程序时,如何停止mediaplayer?

Java 当我单击退出应用程序时,如何停止mediaplayer?,java,android,Java,Android,我在onCreate方法中启动了一个声音,意思是当我打开应用程序时,音乐开始播放。然后我有一个按钮来停止音乐,一切正常。但如果我启动应用程序,然后离开应用程序,音乐仍在播放,因此当我单击“上一步”按钮离开应用程序时,我也想停止音乐。 我有以下代码: 一旦创建: final MediaPlayer mp = MediaPlayer.create(this, R.raw.seconds); mp.start(); 然后是onDestroy: @Override public void on

我在onCreate方法中启动了一个声音,意思是当我打开应用程序时,音乐开始播放。然后我有一个按钮来停止音乐,一切正常。但如果我启动应用程序,然后离开应用程序,音乐仍在播放,因此当我单击“上一步”按钮离开应用程序时,我也想停止音乐。 我有以下代码:

一旦创建:

final MediaPlayer mp = MediaPlayer.create(this, R.raw.seconds);
mp.start();
然后是onDestroy:

@Override
    public void onDestroy()
    {
        // Don't forget to shutdown!
        if (tts != null) {
            tts.stop();
            tts.shutdown();
        }
        super.onDestroy();
        mp.stop;
    }
但在国会议员停止;我的议员是红色的,所以不工作。 如果我尝试将MediaPlayer mp置于onCreate之外,那么mp.start;下院议员停下来;下院议员情绪低落,不要工作太多

有什么建议吗

试着像上面那样使用

试试这个

 private MediaPlayer mp; 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
      ///
      mp = MediaPlayer.create(this, R.raw.seconds);
   }

    @Override
    protected void onStop() {
         if(mp.isPlaying()){
              mp.stop();
         }
        super.onStop();
    }

您可以使用此功能播放歌曲

public void playSong()
    {

        try 
        {
            mp.reset();
            mp.prepare();
            mp.start();
        } 
        catch (IllegalStateException e) 
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } 
        catch (IOException e) 
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }
然后在销毁时释放玩家

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

将以下代码放入Activity的onStop()方法中,这样当您的Activity进入backstack或离开应用程序时,音乐将停止

@Override
protected void onStop() 
{
     if(mp != null && mp.isPlaying())
     {
         mp.stop();
         mp.release();
         mp = null;
     }
    super.onStop();
}

}

您使用的是哪个IDE?我使用的是Android Studio我到目前为止还没有使用过Android Studio,但也许您可以告诉我“蓝线”是什么意思?添加一些说明,以便其他人也可以使用。
@Override
protected void onStop() 
{
     if(mp != null && mp.isPlaying())
     {
         mp.stop();
         mp.release();
         mp = null;
     }
    super.onStop();
}
public class SampleMediaPlayer extends Activity {
private MediaPlayer mediaPlayer;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.sample_media_player); //your layout resource
}

@Override
public void onStart() {
    super.onStart();
}

@Override
public void onStop() {
    super.onStop();
    mediaPlayer.release();
    mediaPlayer = null;
}