2011-02-04 6 views
1


일반적인 문제인지는 모르겠지만 일정 시간 동안 유휴 상태로있을 때 미디어 플레이어가 시작을 지연하고 오디오를 재생하지 못하게됩니다.
는 이전 내가 setDataSource()를 사용하지만, 내가 사용하고 이번에는 기준이 들어

Android : 미디어 플레이어 지연 시작

코드입니다 ........ 문제에 대한 진짜 이유는 모르겠어요() 생성 내가

AssetFileDescriptor afd = _context.getResources().openRawResourceFd(this._soundResource.get(this._toBePlayed)); 
     mp = new MediaPlayer(); 
     mp.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength()); 
     afd.close(); 
     mp.setOnPreparedListener(new OnPreparedListener(){ 

      @Override 
      public void onPrepared(MediaPlayer mp) { 

       mp.start(); 
      } 
     }); 
     mp.setOnCompletionListener(new OnCompletionListener(){ 

      @Override 
      public void onCompletion(MediaPlayer mp) { 

       mp.reset(); 
       mp.release(); 
      } 
     }); 
     mp.prepareAsync(); 

답변

0


내가 FileInputStream 객체를 사용 ....... 사용하고 있습니다. AudioStreamType을 설정하지 않았습니다. 다음은 MediaPlayer를 설정하는 방법입니다.

public void setupMediaPlayer(){ 
    mp = new MediaPlayer(); 
    mp.setAudioStreamType(AudioManager.STREAM_MUSIC); 

    try { 
     fis = new FileInputStream(tempFilePath); 
     mp.setDataSource(fis.getFD()); 
     mp.prepare(); 
     mp.setOnPreparedListener(this); 
    } catch (FileNotFoundException e) { 
     e.printStackTrace(); 
    } catch (IllegalArgumentException e) { 
     e.printStackTrace(); 
    } catch (IllegalStateException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 

tempFilePath 파일의 경로입니다.

이 클래스의 setOnPreparedListener을 구현하면 내 의견으로는 코드를 훨씬 쉽게 읽을 수 있습니다. 참고로

또한 다양한 링크 : MediaPlayer State Diagram

-1

당신이

mp.prepareAsync(); 

mp.prepare(); 

을 변경하고

mp.start(); 

afte를 넣어한다면 내 생각 r mp.prepare(); 코드가 작동합니다. 시도 해봐.

+0

이 문제가 해결되지 않은 : 나는 에서이 같은을 onPrepared (0) mp.seekTo로 고정. 대신, 이것은 주 스레드를 차단합니다. UI/UX에 매우 좋지 않습니다. –

0

또한 start()에 대한 지연 문제가 있습니다.

mp.setOnPreparedListener(new OnPreparedListener(){ 
    @Override 
    public void onPrepared(MediaPlayer mp) { 
     mp.seekTo(0); 
     mp.start(); 
    } 
}); 
관련 문제