2012-06-07 4 views
2

, 내 헤드폰에서 내 누르면 버튼의 양을 계산하려면이 질문에 extendsthis one.카운트 사실 버튼 수량

를 눌렀습니다.

if(action == KeyEvent.ACTION_DOWN) 
    { 
     Toast.makeText(context, "Pressed 1 time", Toast.LENGTH_SHORT).show(); 
    } 
    if(action == KeyEvent.ACTION_MULTIPLE) 
    { 
     k = event.getRepeatCount(); 
     if(k == 2) 
      Toast.makeText(context, "Pressed 2 times", Toast.LENGTH_SHORT).show(); 
     if(k == 3) 
      Toast.makeText(context, "Pressed 3 times", Toast.LENGTH_SHORT).show(); 
     if(k>=4) 
     { 
      String a = Integer.toString(k); 
      Toast.makeText(context, "Pressed " + a + " times.", Toast.LENGTH_SHORT).show(); 
     } 
    } 

하지만 버튼을 누르면 토스트가 "1 회 누름"됩니다. 나는 항상 그것을 얻는다, 시스템은 다른 if에 들어 가지 않는다.

어떻게 해결할 수 있습니까?

덕분에 여전히

ADDITION 이 밖으로 작동하지 않을 수 있습니다. 여기에 내가 할 수있는 작업은 다음과 같습니다

if(action == KeyEvent.ACTION_DOWN) 
    { 
     k++; 
     try 
     { 
      wait(1000); 
     } catch (InterruptedException e) 
     { 
      e.printStackTrace(); 
     } 
    } 
     if(k == 1) 
      Toast.makeText(context, "Pressed 1 time", Toast.LENGTH_SHORT).show(); 
     if(k == 2) 
      Toast.makeText(context, "Pressed 2 times", Toast.LENGTH_SHORT).show(); 
     if(k == 3) 
      Toast.makeText(context, "Pressed 3 times", Toast.LENGTH_SHORT).show(); 
     if(k>=4) 
     { 
      String a = Integer.toString(k); 
      Toast.makeText(context, "Pressed " + a + " times.", Toast.LENGTH_SHORT).show(); 
     } 
     k = 0; 
    abortBroadcast(); 
+0

멀티플렉싱 헤드폰이 "ACTION_MULTIPLE"KeyEvents를 생성합니까? – Kheldar

+0

아니요, 잘 모르겠습니다. 내가 생성 희망 : 나는 버튼을 제어하고 싶습니다. 지금 버튼 클릭은 플레이어에 대해 PLAY/STOP 기능을 수행하고 두 번 누르면 두 번째 트랙으로 이동하거나 세 번 누르면 이전으로 이동합니다. 궁금한데, 어떻게해야합니까? – azizbekian

+0

간단한 카운터를 사용하고 'KeyEvent.ACTION_UP'에서이를 증가시킬 수 있습니다. –

답변

3

은 "여러 중복 키 이벤트는 행에서 발생한"입니다 ACTION_MULTIPLE의 정의, 당신은 하나 개의 버튼을 누르면된다.

if(action == KeyEvent.ACTION_DOWN) 
{ 
    k++; 
    Toast.makeText(context, "Pressed " + Integer.toString(k) + " time(s).", Toast.LENGTH_SHORT).show(); 
} 

편집 :

오 난 당신이 두 번이나 다시 트리플 클릭에에 다음 트랙으로 원하는 참조하십시오. 스레드를 구현하는 것이 좋습니다. KeyEvent.ACTION_DOWN 카운트에서 키를 누릅니다. 스레드에서 대기 (500)를 호출하고 버튼이 몇 번 눌 렸는지 확인한 다음 카운터를 0으로 다시 설정한다고 가정 해 보겠습니다.

+0

전화가 적합합니다. ACTION_MULTIPLE 정의 문제입니다 : D – Kheldar

+0

내 대답을 편집하여 문제를 점검하십시오. –

+0

@ AntalHorváth, 질문을 편집했습니다. – azizbekian