Я делаю приложение для fife. У моей fife есть 6 отверстий, которые я считаю ими как 6 кнопок. Как вы знаете, в пятидесятых случаях разница в том, что вы держите одно, два или более отверстия (здесь кнопки) сразу. Я новичок в андроиде, как я могу управлять им? например, я хочу сделать это:
если button1 и button2 прикосновения одновременно: играть SOUND1
если Button6 и button2 прикосновения одновременно: играть SOUND2
если button1 и button2 и buuton3 прикосновения одновременно: воспроизведение звук3
.
.
.
наконец я использовал этот трюк:Прикосновение к нескольким кнопкам одновременно в android
one.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
switch(event.getAction()){
case MotionEvent.ACTION_DOWN:
is1t = true;
soundtoplay();
one.setBackgroundResource(R.drawable.hintedholes);
return true;
case MotionEvent.ACTION_UP:
is1t = false;
soundtoplay();
one.setBackgroundResource(R.drawable.holes);
return true;
}
return false;
}
});
two.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
switch(event.getAction()){
case MotionEvent.ACTION_DOWN:
is2t = true;
soundtoplay();
two.setBackgroundResource(R.drawable.hintedholes);
return true;
case MotionEvent.ACTION_UP:
is2t = false;
soundtoplay();
two.setBackgroundResource(R.drawable.holes);
return true;
}
return false;
}
});
three.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
switch(event.getAction()){
case MotionEvent.ACTION_DOWN:
is3t = true;
soundtoplay();
three.setBackgroundResource(R.drawable.hintedholes);
return true;
case MotionEvent.ACTION_UP:
is3t = false;
soundtoplay();
three.setBackgroundResource(R.drawable.holes);
return true;
}
return false;
}
});
...
public void soundtoplay(){
if(is1t == true && is2t == false && is3t == false && is4t == false && is5t == false && is6t == false){
mp = MediaPlayer.create(Playing.this, R.raw.b);
mp.start();
}else if(is1t == true && is2t == true && is3t == false && is4t == false && is5t == false && is6t == false){
mp = MediaPlayer.create(Playing.this, R.raw.a);
mp.start();
}else if(is1t == true && is2t == true && is3t == true && is4t == false && is5t == false && is6t == false){
mp = MediaPlayer.create(Playing.this, R.raw.g1);
mp.start();
}else if ...
Вы имеете в виду, что мы не трогаем их, мы трогаем их с задержкой друг за другом? как я могу измерить время кликов? например, я должен сделать это так: если кнопка2 коснулась после 100 миллисекунд от кнопки1, то я считаю, что они касались одновременно? –
Задержка между кликами зависит от вашей реализации. Вы можете получить представление о том, как измерить время между вашим первым кликом и последним кликом, просмотрев эту ссылку: http://stackoverflow.com/questions/12762272/android-countdowntimer-additional-milliseconds-delay-between-ticks – SAbbasizadeh