Android MediaPlayer重置需要很长时间
我的应用程序正在使用Android MediaPlayer重置需要很长时间,android,media-player,android-service,android-music-player,background-music,Android,Media Player,Android Service,Android Music Player,Background Music,我的应用程序正在使用服务和MediaPlayer流式播放音乐,但我在尝试重置MediaPlayer以播放下一首曲目时遇到问题。重设mediaplayer需要很长时间,当我在另一个线程中调用它时,多次快速按next会导致UI冻结一段时间 下面是我用来播放列表中曲目的代码片段 private void playTrack(int position) { if (!isAudioFocusAvailable()) return; try { sendBu
服务
和MediaPlayer
流式播放音乐,但我在尝试重置MediaPlayer以播放下一首曲目时遇到问题。重设mediaplayer需要很长时间,当我在另一个线程中调用它时,多次快速按next会导致UI冻结一段时间
下面是我用来播放列表中曲目的代码片段
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) {
}
}
任何避免重置和用户界面冻结问题的建议请尝试此代码,它可能会有所帮助
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;
}
});
}