Masalah multisentuh: saat menekan dua tombol secara bersamaan, terdeteksi seolah-olah saya hanya menyentuh satu tombol dengan jari, mengapa?

Jadi saya punya dua tombol dan ingin menekan keduanya secara bersamaan. Jika saya menekan yang pertama, ia mencatat "C" (sebagai not piano), yang lain mencatat D.

Sejauh ini:

@Override
     public boolean onTouch(View v, MotionEvent event) {

        int action = event.getActionMasked();

        switch (event.getAction() & MotionEvent.ACTION_MASK){

        case MotionEvent.ACTION_DOWN:
             switch (v.getId()) { 
                case R.id.cnotebutton: 
                    Log.i("C", "C1");
                    return true;
                case R.id.c2notebutton: 
                      Log.i("D", "D1");
                      return true;
                default:
                }

                break;
            case MotionEvent.ACTION_UP:

                break;  
            case MotionEvent.ACTION_POINTER_DOWN:

                break;
            case MotionEvent.ACTION_POINTER_UP:

                switch (v.getId()) { 
                    case R.id.cnotebutton:
                        Log.i("C", "C2");
                        return true;
                    case R.id.c2notebutton: 
                          Log.i("D", "D2");
                          return true;
                    default:
                    }
                break;
            case MotionEvent.ACTION_MOVE:

                break;
            default:

        }
        return true;
    }

Saya mencatat C1 dan C2 untuk membedakan kasusnya, tetapi setiap kali saya menekan tombol, saya hanya mendapatkan C1,C2 atau D1,D2 seolah-olah saya menyentuh tombol yang sama dengan kedua jari saya. Saya harus mendapatkan C1,D2 atau D1,C2 tergantung jari mana yang menunjuk terlebih dahulu. Ada saran? Lagi pula saya belum menemukan proyek sampel piano, tapi itu pasti akan membantu saya, jika ini tidak berhasil atau pendekatan saya salah total. Apakah ada?

Terima kasih sebelumnya!


person Jani Bela    schedule 05.12.2012    source sumber


Jawaban (1)


Saya pikir public boolean onInterceptTouchEvent (MotionEvent ev)adalah apa yang Anda cari. Lihat ini.

person Markus Rubey    schedule 05.12.2012