2016-03-31 7 views
-1

Ich bin auf der Suche nach zwei aufeinanderfolgenden Tasten (erste, dann eine andere) innerhalb einer Zeitspanne und speichern Sie den Wert der einzelnen Tastencode. Der Zeitraum beträgt 3 Sekunden oder mehr und die Tasten sind nur Ziffern.Verwenden Sie mehr als ein KeyEvent in Android

In diesem Code, den ich nur Zahlen von 1 bis 9

habe
@Override 
    public boolean onKeyDown (int keyCode, KeyEvent event){ 
    event.getScanCode(); 
    switch (keyCode) { 
     case KeyEvent.KEYCODE_BACK: 
      break; 
     case KeyEvent.KEYCODE_DPAD_UP: 
      break; 
     case KeyEvent.KEYCODE_DPAD_DOWN:    
      break; 
     case KeyEvent.KEYCODE_DPAD_RIGHT: 
      break; 
     case KeyEvent.KEYCODE_DPAD_LEFT: 
      break; 
     case KeyEvent.KEYCODE_ENTER: 
      super.onKeyDown(KeyEvent.KEYCODE_ENTER, event); 
      break; 
     default: 
      //This is the part 
     if (keyCode>7 && keyCode<17){ 
      indice_layouts[(keyCode - 8)].requestFocus(); 
     }else{ 
      Toast.makeText(this,"empty number", Toast.LENGTH_LONG).show(); 
     } 
      break; 
    } 


     return true; 
} 

Ich suche zuerst 1 zu setzen und dann 3 und schließlich den 13.

Vielen Dank im Voraus erhalten!

Antwort

0

Sie könnten mit Klassenvariablen überprüfen. Pseudocode unten. Es ist ein bisschen hacky, aber es sollte funktionieren.

long timeButton1 = 0; 
int keyCode1 = 0; 
public boolean onKey(...) { 
    ... 
    if(keyCode == KEYCODE_1) { 
     timeButton1 = new Date().getTime(); 
     keycode1 = KEYCODE_1; 
    } 
    if(keyCode == KEYCODE_3 && new Date().getTime() - timeButton1 > 3000 && keycode1 == KEYCODE_1) { 
     //Reset 
     timeButton1 = 0; 
     keycode1 = 0; 
     //Do awesome stuff 
     ... 
    } 
}