我有一个媒体播放器,每次调用此 Activity 时,如果有媒体播放器在播放,我希望它停止,新的媒体播放器开始播放...这是我的音频播放器方法
private void playAudio(String url) throws Exception{
mediaplayer.release();
mediaplayer.setDataSource(url);
mediaplayer.prepare();
mediaplayer.start();
我在类(class)开始时初始化媒体播放器
private MediaPlayer mediaplayer = new MediaPlayer();
private Handler handler = new Handler();
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.songplaying);
// Getting Our Extras From Intent
Bundle names = getIntent().getExtras();
// Getting Specific Data
path = names.getString("pathkeyword");
//Start Player
try {
playAudio(path);
} catch (Exception e) {
e.printStackTrace();
}
每次创建这个类时,它都会创建一个新的媒体播放器,不会停止另一个媒体播放器,而是同时播放两个媒体播放器。
最佳答案
您可能希望查看 onPause
然后关闭媒体播放器。问题是,一旦媒体播放器被第二次创建,就没有对它的引用。结果,你开始你的 Activity ,播放音乐,但是当你退出时(例如按下主页按钮)媒体播放器没有被告知停止(它作为一个单独的线程运行)。当您重新打开它时,它将在新线程上启动一个新的媒体播放器,并产生两种声音。
要解决此问题,请在退出时正确终止媒体播放器。当您退出 Activity 时,这将正确地终止媒体播放器:
@Override
protected void onPause(){
super.onPause();
if(mediaplayer.isPlaying()){
try{
mediaplayer.stop();
}
catch(IllegalStateException){
Log.d("mediaplayer","Media player was stopped in an illegal state.");
}
}
}
如果您希望在 Activity 不在前台时继续播放音乐,您需要使用 Service
。
关于android - 媒体播放器继续播放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8263472/