2013-05-08 110 views
1
private MediaPlayer mpintro; 
mpintro = MediaPlayer.create(this, R.raw.bgmusic); 
mpintro.setLooping(true); 
mpintro.start(); 

这些是我的mediaplayer代码,不断在应用程序背景中播放,尽管我有一个小问题。当应用程序在后台或我关闭它(没有强制关闭)时,它仍然播放声音,然后我再次播放它播放两次,每次更多。我如何停止或暂停它并获得一个声音?Android的音乐播放器播放同一个声音不止一个

PS:我不想在应用程序apk的声音文件,我怎么能从任何文件夹调用它?

+0

你有两个mediaPlayers? mpclick和mpintro?为了停止声音,只需调用例如mpintro.stop();在你的活动的onPause()或onStop()方法 – Opiatefuchs 2013-05-08 13:30:59

+0

编辑:对不起,这是错误的代码,我有两个mp和其他播放只是点击,介绍一个暂停和点击播放,然后介绍再次播放。 我应该在哪里停止或暂停方法?当程序没有显示在屏幕上,然后只有一个声音再次播放不会两次或更多:) – 2013-05-08 13:43:55

回答

0

在您的主要活动中您可以通过覆盖onPause(),onStop()方法来处理它。如果您在Eclipse中开发,请右键单击鼠标按钮 - >源代码 - >覆盖/实现方法。在这里,您可以选择的onPause()或的onStop()方法,那么他们将被添加到您的代码:

@override 
     protected void onPause(){ 

     if(mpintro!=null){ 

     mpintro.stop(); 
     } 

      super.onPause(); 
     } 

用相同的onStop()。但这取决于你想要什么。如果你想停止媒体播放器,这应该工作。但如果你想暂停您的播放器,因此,如果您恢复您的应用程序也可能再次播放,那么你可以称之为:

 @override 
     protected void onPause(){ 

     if(mpintro!=null){ 

     mpintro.pause(); 
     } 
     super.onPause(); 
     } 

,并在您的onResume():

 @override 
     protected void onResume(){ 

     if(mpintro!=null){ 
     mpintro.start(); 
     } 
      super.onResume(); 
     } 

我couldn'现在就测试这个代码,所以如果有什么不对,请说点什么,我会稍后再试。但是这应该给你例子如何处理它。

+1

谢谢,它的工作,只是自动添加 'super.onPause();' 和 'super.onResume() ;' – 2013-05-08 14:33:03

+0

是的,你是赖特....我忘了......现在我修好了...... – Opiatefuchs 2013-05-08 17:05:07