2012-03-18 4 views
1

두 가지 유형의 앱에서 두 가지 유형의 MediaPlayer를 재생할 수 있습니다. 하나는 다음 단어/음향 효과를 재생할 때까지 기다리는 단일 변수입니다. 이것은 잘 작동하는 것 같습니다. 다른 하나는 동시에 재생되는 최대 4 개의 MediaPlayer 변수 세트입니다. 이것은 2.3.3에서 작동하며 4.0.3 가상 장치에서 작동하는 것으로 보이지만 TF101에서는 두 응용 프로그램 모두에서 충돌이 발생합니다.Android ICS MediaPlayer가 동시 재생 용 변수에서만 충돌합니다.

잘못된 터치로 playse ('oops')가 호출됩니다. 4 개 변수는 다음과 같이 처리하는 응용 프로그램의 메인 루프에서

public void playse(String ss){ 
    MediaPlayer tempse; 

    if(tse1 == null){tempse = tse1;} 
    else{if(tse2 == null){tempse = tse2;} 
    else{if(tse3 == null){tempse = tse3;} 
    else{if(tse4== null){tempse = tse4;}}}} 

    if(ss == "oops"){ tempse = MediaPlayer.create(mContext, R.raw.seoops); tempse.start();} 
} 

:

 if(tse1 != null){ if(tse1.isPlaying()== false){tse1.release(); tse1= null;} } 

     if(tse2 != null){ if(tse2.isPlaying()== false){tse2.release(); tse2= null;} } 

     if(tse3 != null){ if(tse3.isPlaying()== false){tse3.release(); tse3= null;} } 

     if(tse4 != null){ if(tse4.isPlaying()== false){tse4.release(); tse4= null;} } 
+0

귀하의 질문은 실제로 당신이하려는 것을 설명하지 않습니다. 그러나 그것과는 별도로,'=='을'Strings'에 대한 비교로 사용하면 결코 예측할 수없는 결과를 초래할 수 있습니다. 'if (ss == "oops")'를 if (ss.equals ("oops"))'로 변경하십시오. – Squonk

답변

0

당신은 생략 할 수 어쩌면

MediaPlayer tempse; 
if(tse1 == null){tempse = tse1;} 
else{if(tse2 == null){tempse = tse2;} 
else{if(tse3 == null){tempse = tse3;} 
else{if(tse4== null){tempse = tse4;}}}} 

MediaPlayer tempse = null; 

당신를 변경해야합니다.~ !=

오류 만 알면 알 수있는 유일한 방법입니다.

+0

나는 동시 소리를 허용하려고 노력했다. 나는 현재 진행중인 4 가지 소리 중 하나를 가리키는 참조를 사용하고 있다고 생각했습니다. 그것에 몇 가지 코드를 던져서, 2.3.3에서 작동했을 때 나는 계속 전진했다. 나를 위해 할 일은 모든 tse1-4를 제거하고, 나중에 확인할 변수가 없어도 파일을로드/재생하는 것입니다. 필자는 사운드 코드를 대기시키는 동반자가 더 복잡 할 것이라고 생각한다고 생각합니다. 감사. 단지 2.3.3에서 작동하고 가상 장치에서는 보이는 것처럼 보이지만 TF101에서는 4.0.3 – wubitog

+0

으로는 작동하지 않습니다. 사운드 풀은 동시에 여러 사운드를 처리하는 좋은 방법입니다. 다른 코드를 제거해도 MediaPlayer를 사용할 때 사운드가 빨리 재생되면 디버거에 많은 문제가 표시되고 오디오 품질이 떨어집니다. – wubitog

+0

대기중인 여러 사운드 버전에서 작업 중이므로 처음에는 MediaPlayer에 갔다고 생각합니다. 사운드가 계속 재생되고 있는지를 확인하는 것이 더 쉬워 보였습니다. SoundPool을 사용하여 사운드가 현재 재생 중인지 확인할 수 있습니까? – wubitog

관련 문제