Мультитач в саундпуле
Как сделать несколько касаний в саундпуле? У меня 3 кнопки. Когда палец скользит по сенсорной кнопке, как звук в пианино? Это мой код:
sp = new SoundPool (5, AudioManager.STREAM_MUSIC, 0);
player1 = sp.load(this, R.raw.ndang, 1);
player2 = sp.load(this, R.raw.nding, 1);
player3 = sp.load(this, R.raw.ndung, 1);
ndang = (ImageButton) this.findViewById(R.id.ndang);
ndang.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
// TODO Auto-generated method stub
sp.play(player1, 1, 1, 0, 0, 1);
}
});
ndang = (ImageButton) this.findViewById(R.id.ndang2);
ndang.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
// TODO Auto-generated method stub
sp.play(player1, 1, 1, 0, 0, 1);
}
});
nding = (ImageButton) this.findViewById(R.id.nding);
nding.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
// TODO Auto-generated method stub
sp.play(player2, 1, 1, 0, 0, 1);
}
});
2 ответа
Решение
Вам необходимо реализовать View.OnTouchListener
или лучше для пианино, чтобы создать пользовательский вид, содержащий всю клавиатуру и переопределить onTouchEvent
, Это позволит вам обнаружить несколько нажатий клавиш пианино и скольжения клавиш при минимизации кода.
РЕДАКТИРОВАТЬ:
public class PianoView extends View {
@Override
onTouchEvent(MotionEvent event) {
//your code to find which key was pressed based on x,y touch
}
}
или же
public class PianoActivity extends Activity {
@Override
dispatchTouchEvent(MotionEvent event) {
//your code to find which key was pressed based on x,y touch
}
}
Может ли это вам помочь: http://www.martinhoeller.net/2012/01/13/developing-a-musical-instrument-app-for-android/