2011-08-23 3 views
1
E/MediaPlayer(20473): error (-19, 0) 

I/MyApp (20473): Decoding lala.mp3 

I/StagefrightPlayer( 68): setDataSource('mypath') 

E/AudioFlinger( 68): no more track names available 

E/AudioTrack( 68): AudioFlinger could not create track, status: -12 

E/AudioSink( 68): Unable to create audio track 

any1이 왜 이것을 얻고 있는지 알 수 있습니까? 이것은 일반적으로 mediaPLayer를 사용하여 약 100 개 이상의 오디오 파일을 재생 한 후에 발생합니다. 나는 이것을 이렇게 연주하고있다.Mediaplayer 사용 중 오류 -19,0이 발생 했습니까?

public RenderResultFormat DoIt() { 
    if(mp!=null){ 
     mp.release(); 
     mp = null; 
    } 
AudioRenderer mr = new AudioRenderer(); mp = mr.AudioRenderer(filePath);} 



private class AudioRenderer extends Activity { 
    private MediaPlayer AudioRenderer(String filePath) { 
//delcare mediaplayer variables, path etc 
    mp= MediaPlayer.create(this, path); 
if(mp != null){ 
    int duration = mp.getDuration(); 
       mp.start(); 
       try { 
        Thread.sleep(duration); 
       } catch (InterruptedException e2) { 
        e2.printStackTrace(); 
        System.out.println("I've been interrupted >:("); 
       } 
       } 
}return mp;} 

나는 뭔가를 놓치고있다. 새로운 안드로이드 개발. 고맙습니다.

+0

doc에서 권장 한대로 사용 후 mp를 출시합니까? (http://developer.android.com/reference/android/media/MediaPlayer.html#release()) – Joubarc

+0

감사합니다. 그래, 내가 해방 했어하지만 당신이 릴리스 후에 다시 mp = null 선언 할 필요가 있는지 몰랐다. 그것을 시도해보십시오. – Sith

+0

괜찮습니다.) : – Sith

답변

3

이 솔루션은 저에게 잘 작동합니다 (자원 재생). 그냥 구현하십시오 OnCompletionListener

private void playbeep(int id) { 

    MediaPlayer mPlayer; 
    mPlayer = MediaPlayer.create(context, id); 
    mPlayer.start(); 
    mPlayer.setOnCompletionListener(new OnCompletionListener() {   
     public void onCompletion(MediaPlayer mp) { 
      mp.release(); 
     } 
    }); 
} 
관련 문제