【问题标题】:How to get Android MediaPlayer() to stop when app is closed?应用程序关闭时如何让 Android MediaPlayer() 停止?
【发布时间】:2016-08-09 06:12:45
【问题描述】:

我的 android 应用创建了一个 MediaPlayer() 并播放一首循环歌曲。当用户离开应用程序时,我需要让它停止播放。我还需要以某种方式获得音量按钮,让用户调整歌曲音量......有什么想法吗?

MediaPlayer mp;

public void setupMediaPlayer()
{
    mp = MediaPlayer.create(context, R.raw.song);
    mp.setLooping(true);
    mp.start(); 
}

public void stopMediaPlayer()
{
    mp.stop();
}

【问题讨论】:

  • 亲爱的上帝,除非您的应用是专门的音乐播放器应用,否则请不要这样做
  • 是否有另一种同样轻松的方式 - 我认为此时我的应用程序可以处理这个媒体播放器的所有开销。歌曲也非常小,小于 500k。
  • 我认为他的观点是,播放循环歌曲的应用很可能会很烦人,而不是技术上不可能。
  • 电子游戏。那些通常有音乐。否则它们看起来很粗糙。如果你玩《超级马里奥兄弟》后音乐在第一次运行后停止播放怎么办?

标签: android


【解决方案1】:

根据你问题的前半部分:如果你在onPause() 和onDestroy() 中调用stopMediaPlayer(),你应该得到你想要的。示例:

@Override
protected void onPause() {
    super.onPause();
    stopMediaPlayer();
}

下半场:尝试查看 AudioManager 类(尤其是 AUDIO_FOCUS_GAIN),看看它是否可以处理您要查找的内容。

确保循环音频在应用程序的上下文中有意义,但...如果我不会错过 90 年代中期业余网站上的一件事,那就是每个人似乎都放的糟糕的 MIDI 背景音乐在他们...

【讨论】:

  • naw 这是一个流畅的节拍,但我担心用户会沉迷于这种声音。
【解决方案2】:

还可以考虑 onResume(),以便在用户返回您的应用时继续循环播放歌曲。

【讨论】:

    【解决方案3】:

    根据 eldarerathis 的回答,stopMediaPlayer 对我不起作用,但确实如此:

     @Override
    protected void onPause() {
        super.onPause();
        releaseMediaPlayer();
    }
    

    不知道为什么……

    已编辑:

    根据我正在做的课程,this 是正确的方法。

    也许有一天我会弄清楚其中的区别。 :)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-05-13
      • 1970-01-01
      • 2015-06-02
      • 2013-05-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多