2011-12-29 6 views
0

Android에서 개발 중이며 부울 값 집합에 따라 오디오 파일을 순서대로 재생하는 비동기 작업을 만들려고했습니다 (i1이 참이면 i1을 재생 한 다음 i1이 완료되면 i2가 참이면 재생됩니다). 내 첫 시도는 응용 프로그램을 크래킹하지 않지만 오디오 파일을 재생하지 않습니다.Android : 여러 오디오 트랙 재생

class SessionMusicTask extends AsyncTask<Void, Void, Void>{ 

     @Override 
     protected Void doInBackground(Void... params) { 
      try { 
       while(playing == true){ 
       if(i1 == true && done == true){ 
        done = false; 
        player.setDataSource(i1Loc); 
        player.prepare(); 
        player.start(); 
        player.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { 

         public void onCompletion(MediaPlayer mp) { 
          done = true; 

         } 
        }); 
       } 
       } 
      } catch (IllegalArgumentException e) { 
       e.printStackTrace(); 
      } catch (IllegalStateException e) { 
       e.printStackTrace(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
      return null; 
     } 

     @Override 
     protected void onPostExecute(Void result) { 
      super.onPostExecute(result); 
     } 

    } 

이 방법이 가장 좋은 방법입니까? 파일이 재생되지 않는 이유는 무엇입니까? 사전에 도움을 주셔서 감사합니다.

업데이트 : 그냥 onPostExecute()에 finish()를 넣으면 작업이 거의 즉시 끝나기 때문에 오디오 파일을 재생하지 못한다고 생각합니까?

답변

1

당신이 노래는 달리 재생이 완료되면 당신은 몇 가지 이상한 행동을 볼 수있는 MediaPlayer를 클래스를 해제하고 있는지 확인 : (PARAMS ... 무효)

mp.release(); 
+0

좋은 조언, 문제는 해결되지 않았습니다. – Flynn

+0

이것은 받아 들여졌습니다 ... 이것은 실제로 결국 문제를 해결합니까? – Rob

0

쓰기가에서 :: doInBackground 외부 다음 {

player.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { 

          public void onCompletion(MediaPlayer mp) { 
           done = true; 

          } 
         }); 
+0

그냥 시도해도 오디오는 재생되지 않습니다. – Flynn

관련 문제