Мультитач в саундпуле

Как сделать несколько касаний в саундпуле? У меня 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
    }
}
Другие вопросы по тегам