MediaPlayer的复位时间长 [英] MediaPlayer Reset takes long time
本文介绍了MediaPlayer的复位时间长的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我的应用程序中使用服务
和的MediaPlayer
流媒体音乐,而是试图重设媒体播放器时,我有一个问题播放下一首曲目。媒体播放器复位时间长,导致UI冻结了一会儿,当快速多次preSS下一虽然我把它称为在另一个线程。
My app is streaming music using Service
and MediaPlayer
, but i have a problem when trying to reset the mediaplayer to play next track. resetting mediaplayer takes long time and causes UI to freeze for a while when press next quickly multiple times although I call it in another thread.
下面是我的code的片段,我用它来从我的列表播放曲目
Here is my snippet of code which i use to play track from my list
private void playTrack(int position) {
if (!isAudioFocusAvailable())
return;
try {
sendBufferingStarted();
// Problem is here
mPlayer.reset();
mPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mPlayer.setDataSource(mTracks.get(mCurrentPosition).getUrl());
mIsBuffering = true;
mPlayer.prepareAsync();
mIsPaused = false;
acquireWifiWakeLock();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
}
}
任何建议,以避免重置和UI冻结问题
Any suggestions to avoid resetting and UI freeze problems
推荐答案
试试这个code,它可以帮助
try this code it may help
public void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
if(!isPlaying){
mPlayer = new MediaPlayer();
mPlayer.setDataSource(soundid[position]);
mPlayer.prepare();
mPlayer.start();
isPlaying = true; // reproducir es true
}else{
isPlaying = false;
mPlayer.stop();
mPlayer.reset();
mPlayer.setDataSource(soundid[position]);
mPlayer.prepare();
mPlayer.start();
isPlaying = true;
}
mPlayer.setOnCompletionListener(new OnCompletionListener() {
public void onCompletion(MediaPlayer mPlayer) {
mPlayer.release();
isPlaying = false;
}
});
}
这篇关于MediaPlayer的复位时间长的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文