마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

피아노 어플을 만드려고 합니다. [closed]

0 추천

피아노 어플을 만드려고하는데 멀티터치 구현후  버튼을 누르면 소리가 나게 만들었습니다.
 
근데 동시에 버튼을 누르면 한번에 나는것이아니라 순차적으로 소리가 나더군요 ..
 
제가 원하는건 두개의 버튼을 동시에 누를때 동시아 소리가 나는것인데 어떻게 구현해야할지 모르겠습니다.
 
그리고 코드창 하나 더 만들어졌는데 어떻게 지우는거죠 ?
 
  public boolean onTouchEvent(MotionEvent event)
    {
        float[] x = new float[10];
        float[] y = new float[10];
        boolean[] touched = new boolean[10];

        int action = event.getAction() & MotionEvent.ACTION_MASK;
        int pointerIndex = (event.getAction() & MotionEvent.ACTION_POINTER_ID_MASK);
        pointerIndex = pointerIndex >> MotionEvent.ACTION_POINTER_ID_SHIFT;
        int pointerId = event.getPointerId(pointerIndex);

        switch(action)
        {
            case MotionEvent.ACTION_DOWN:
            case MotionEvent.ACTION_POINTER_DOWN:
                touched[pointerId] = true;
                x[pointerId] = (int)event.getX(pointerIndex);
                y[pointerId] = (int)event.getY(pointerIndex);
                Log.e("String","터치:" +event.getPointerCount());
                Log.e("터치 충돌","포인트 :"+ x[pointerId]);
                for(int Count =0;  Count <Piano_Btn_R.size(); Count++)
                    {

                        if(Piano_Btn_R.get(Count).contains(x[pointerId],y[pointerId]))
                        {
                              Piano_Btn.get(Count).setImageResource(Res_Change("bt_off","drawable",Count));
                              Pool_Res = mPool.load(Main.this,Res_Change("s","raw",Count),1);
                              Log.e("터치 충돌","충돌손가락 :"+event.findPointerIndex(pointerId)+"충돌 사각형 :"+Count);
//                            Log.e("터치 충돌","포인터 카운터 :"+event.getPointerCount());
                              mPool.play(Pool_Res,1,1,0,0,1);
                            break;
                        }

//
                    }
                break;
            case MotionEvent.ACTION_UP:
            case MotionEvent.ACTION_POINTER_UP:
            case MotionEvent.ACTION_CANCEL:
                touched[pointerId] = false;
                x[pointerId] = (int)event.getX(pointerIndex);
                y[pointerId] = (int)event.getY(pointerIndex);
                break;
            case MotionEvent.ACTION_MOVE:
                int pointerCount = event.getPointerCount();
                for(int i=0; i<pointerCount; i++)
                {
                    pointerIndex = i;
                    pointerId = event.getPointerId(pointerIndex);
                    x[pointerId] = (int)event.getX(pointerIndex);
                    y[pointerId] = (int)event.getY(pointerIndex);
                }
                break;
        }
        return true;
    }
 
 
 
질문을 종료한 이유: mPool = new SoundPool(100, AudioManager.STREAM_MUSIC,100); 스트림수 를 늘려주었고 초반에 음원파일을 전부 불러온뒤 플레이 하는 방식으로 해결하였습니다.
익명사용자 님이 2015년 6월 19일 질문
2015년 6월 19일 closed
...