从onPause()启动时MediaPlayer循环

时间:2013-05-08 08:37:14

标签: java android audio media-player onpause

我希望在调用我的Activity的onPause()时播放声音。为此,我使用以下代码:

@Override
public void onPause()
{
    super.onPause();

    MediaPlayer player = MediaPlayer.create(this, Settings.System.DEFAULT_RINGTONE_URI);
    player.setLooping(false);
    player.start();
}

这很好用,但声音一直在播放。我尝试添加OnCompletionListener,但这没有帮助(永远不会调用Listener)。

我知道我没有在任何地方拨打player.stop()player.release(),但我甚至不知道该在哪里这样做。

我现在的问题是:我怎样才能让声音只播放一次?有没有办法在应用程序进入后台之前等待媒体播放器完成?

4 个答案:

答案 0 :(得分:2)

好的,我找到了解决方案。

问题是,我使用Settings.System.DEFAULT_RINGTONE_URI,显然从未停止过播放。

使用Settings.System.DEFAULT_NOTIFICATION_URI代替解决问题。

答案 1 :(得分:0)

你可以尝试这个(如果我理解正确的话)

public boolean test=false; // At begin

public void onPause()
{
    super.onPause();
if(!test){
    MediaPlayer player = MediaPlayer.create(this, Settings.System.DEFAULT_RINGTONE_URI);
    player.setLooping(false);
    player.start();
    test=true;
}
}

也许我不明白你想说什么。如果你向我们解释一下,也许我们可以帮助你:)

答案 2 :(得分:0)

我没有这样做,但我认为你可以查看这个

       player.setLooping(false);
       player.setOnCompletionListener(new OnCompletionListener() 
        {
            @Override
            public void onCompletion(MediaPlayer mp)
            {
                player.stop();
                player.release();
            }
        });

答案 3 :(得分:-1)

不确定为什么它会在循环中播放但您可以使用MediaElement播放声音吗?您可以使用MediaEnded方法识别媒体何时结束,然后调用stop方法停止播放音频