0
내 앱이 Service
및 MediaPlayer
을 사용하여 음악을 스트리밍하고 있지만 다음 트랙을 재생하도록 mediaplayer를 재설정하려고 할 때 문제가 있습니다. Mediaplayer를 재설정하면 오랜 시간이 걸리며 다른 스레드에서 호출해도 잠깐 동안 다음 번에 여러 번 빨리 누르면 UI가 멈 춥니 다. 여기 MediaPlayer 재설정이 오래 걸립니다.
내 앱이 Service
및 MediaPlayer
을 사용하여 음악을 스트리밍하고 있지만 다음 트랙을 재생하도록 mediaplayer를 재설정하려고 할 때 문제가 있습니다. Mediaplayer를 재설정하면 오랜 시간이 걸리며 다른 스레드에서 호출해도 잠깐 동안 다음 번에 여러 번 빨리 누르면 UI가 멈 춥니 다. 여기 MediaPlayer 재설정이 오래 걸립니다.
이 코드를 시도 재설정 및 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;
}
});
}
도움이 될 수있다