我希望在调用我的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()
,但我甚至不知道该在哪里这样做。
我现在的问题是:我怎样才能让声音只播放一次?有没有办法在应用程序进入后台之前等待媒体播放器完成?
答案 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方法停止播放音频