2016-12-13 14 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); 

 Смежные вопросы

  • Нет связанных вопросов^_^