2016-12-13 6 views
-1

다른 사운드가있는 12 버튼을 사용하고 있습니다. 사용자가 두 버튼을 동시에 클릭하면 버튼이 동시에 재생되어야합니다.동시에 여러 개의 SoundPool 재생

MediaPlayer을 사용할 때 SoundPool에 대해 배웠고 모든 것이 괜찮 았습니다. 그러나 12 개의 다른 소리로 나는 너무 많은 행을 써야했고 올바른 방법이라고 생각하지 않습니다. 이 작업을 수행.

이렇게하는 것이 옳은 방법인가요? 12 음을 위해 이것을 쓸 때 오랫동안 사용하게됩니까?

SoundPool sp1,sp2,sp3; 
int id1,id2,id3; 

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.piano); 

sp1 = new SoundPool(1, AudioManager.STREAM_MUSIC,1); 
     sp2 = new SoundPool(1, AudioManager.STREAM_MUSIC,1); 
     sp3 = new SoundPool(1, AudioManager.STREAM_MUSIC,1); 

id1 = sp1.load(this,R.raw.p1,1); 
     id2 = sp2.load(this,R.raw.p2,1); 
     id3 = sp3.load(this,R.raw.p3,1); 

} 

public void p1Click(View v) 
     { 
      sp1.play(id1,1,1,1,0,1); 
     } 

public void p2Click(View v) 
     { 
      sp2.play(id1,1,1,1,0,1); 
     } 

public void p3Click(View v) 
     { 
      sp3.play(id1,1,1,1,0,1); 
     } 

답변

0

는 당신은 SoundPool (sp1) 하나가 필요합니다

sp1 = new SoundPool(12, AudioManager.STREAM_MUSIC,1); 
id1 = sp1.load(this,R.raw.p1,1); 
id2 = sp1.load(this,R.raw.p2,1); 
... 
sp1.play(id1,1,1,1,0,1); 
sp1.play(id2,1,1,1,0,1); 
... 

(1) (12)는 12 동시에 소리를 재생할 수 있다는 것을 의미합니다.
(2) 활성 소리를 기록해 두십시오. 나중에 유용 할 것입니다. (sp1.play은 정수를 반환합니다) :

int streamID = sp1.play(id1,1,1,1,0,1);