2014-02-09 138 views
1

在我的一个活动中,有一个使用mediaPlayer播放音乐的按钮。此外,它还可以选择在后台播放音乐或在活动结束时停止播放。在后台停止MediaPlayer - Android

我为此使用此代码。

@Override 
protected void onStop() { 
    super.onStop(); 
    SharedPreferences perfs = PreferenceManager 
      .getDefaultSharedPreferences(getApplicationContext()); 
    if (!perfs.getBoolean("bg_play", true)) { 
     mediaPlayer.stop(); 
     mediaPlayer.release(); 
    } 
} 

完美的作品。现在问题出现在用户重新开始活动并按下播放按钮时,它启动一个新的mediaPlayer并播放新的音乐。当新音乐开始时,我想要停止以前的音乐在后台运行。

这里是我的代码

private void myMediaPlayer() { 
    if (mediaPlayer.isPlaying()) { 
     mediaPlayer.pause(); 
    } 
    else { 
      mediaPlayer.stop(); 
      mediaPlayer.reset(); 
     try { 
      mediaPlayer.setDataSource(Environment.getExternalStorageDirectory()+"file.mp3"); 
     } catch (IllegalArgumentException e) { 
      e.printStackTrace(); 
     } catch (IllegalStateException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
     try { 
      mediaPlayer.prepare(); 
     } catch (IllegalStateException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
     mediaPlayer.start(); 
    } 
} 

而且MediaPlayer的声明

MediaPlayer mediaPlayer=new MediaPlayer(); 

onCreate

+0

我是初学者编程,所以我可能是错的。 ..不会使mefiaPlayer变量静态工作?但我认为问题在于,当你回到活动中时,活动正在重建。 –

+0

@FtabHussain谢谢。它的作品 – Munawir

+0

酷!我将其添加为答案。请不要忘记接受:) –

回答

0

之前,我是一个初学者到编程,所以我可能是错的。 ..不会使mefiaPlayer变量静态工作?但我认为问题在于,当你回到活动中时,活动正在重建。

+0

当停止并重新启动活动时,我做了它。我的活动播放与webview html文件相关的音乐。即file1.html播放file1.mp3。我可以检查播放的音乐是否是与网络视图相关的音乐,返回到活动 – Munawir

+0

查看媒体播放器的获取方法。总是有一个get方法:P(例如:mediaPlayer.get ...) –