2012-02-17 1 views
1

다른 질문을 시도했지만 그 내용이 내가 찾은 것 같지 않습니다. 내가 MP의 여러 인스턴스를 개방하고 알고 http://pastie.org/private/psy2nnys8i0ajz4i8qfwmediaPlayer 및 if/else를 사용하여 한 번에 하나의 오디오 파일 만 재생하려고 시도합니다.

, 그래서 하나가 재생되는 경우 감지하고 라인 34-39에 그것을 중지하려고 노력하지만, 여전히

겹치는 : 여기

내 자바의 제발 조언. 싱글 톤을 시도했는데 작동하지 않았고, 미디어 플레이어 인스턴스 하나를 사용하고 데이터 소스를 설정하려고했지만 R.raw.clipname을 전달하는 방법을 알지 못했습니다.

감사합니다.

+0

@Harry 나는 방금 소리를 쓰려고 했으니 +1 소리 풀에 대해서. – keyser

+0

@ keyser5053 나는 사운드 풀이 파일의 크기 때문에 문제가 될 것이라고 생각한다. 그것들은 800kb에서 1mb에 이르기까지 다양하다. 더 작은 파일을 내가 사용하는 무엇입니까? – dunivanb

+0

잘 모르겠습니다. 문제가 될 수 있지만 테스트가 쉬운 경우 계속 진행하십시오. 그렇지 않으면 내가 제안 할 수있는 것은 미친 것처럼 디버깅하는 것입니다 ... (sry). – keyser

답변

1

코드 디버깅/추적이 다소 어려울 수 있습니다. 그러나 나는 당신에게 또한 당신의 코드를보다 강력하고 간단하게됩니다 MediaPlayer에 원시 리소스를 열 수있는 솔루션을 제공 할 수 있습니다 :

MediaPlayer player=new MediaPlayer(); 
player.setDataSource(
    getResources().openRawResourceFd(R.raw.clip1).getFileDescriptor()); 
0

사용 THIS ONE :

@Override

public boolean onTouch(View v, MotionEvent event) { 
    switch (event.getAction()) { 
    case MotionEvent.ACTION_UP://int end 
     pv.stop(); 
     pv.reset(); 
     pv=MediaPlayer.create(MainActivity.this,R.raw.slot); 
     Toast.makeText(this,"stop",Toast.LENGTH_SHORT).show(); 
     break; 
    case MotionEvent.ACTION_DOWN://in start 
     pv.start(); 
     Toast.makeText(this,"play",Toast.LENGTH_SHORT).show(); 
     break; 
    default: 
     break; 
    } 
    return false; 
}