0

내 앱이 ServiceMediaPlayer을 사용하여 음악을 스트리밍하고 있지만 다음 트랙을 재생하도록 mediaplayer를 재설정하려고 할 때 문제가 있습니다. Mediaplayer를 재설정하면 오랜 시간이 걸리며 다른 스레드에서 호출해도 잠깐 동안 다음 번에 여러 번 빨리 누르면 UI가 멈 춥니 다. 여기 MediaPlayer 재설정이 오래 걸립니다.

내 내가 문제

답변

0

이 코드를 시도 재설정 및 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; 
     } 

    }); 
} 
도움이 될 수있다
관련 문제