2017-12-30 14 views
0

既に起動しているstopLockTask()を呼び出すために、自分のアプリのキーの組み合わせを設定する必要があります。どうやってやるの?私はShift + Left Arrowを使って次のコードを使用することができます。メタキーを使用せずにAndroidで組み合わせキーを定義する方法

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    //Read the input and display its code 

    switch (keyCode) { 
     case KeyEvent.KEYCODE_HOME: 

      mTextView.setText("Home"); 
      break; 
     case KeyEvent.KEYCODE_DPAD_LEFT: 
      if (event.isShiftPressed()) { 
       Toast.makeText(this, "You pressed left + Shift", Toast.LENGTH_SHORT).show(); 
       stopLockTask(); 
      } 
      break; 


     default: 
      char c = event.getDisplayLabel(); 
      String code = String.valueOf(keyCode); 
      String displayText = c + " " + keyCode; 
      mTextView.setText(displayText); 
      mTextView.setBackgroundColor(mColor ^= Color.GREEN); 

    } 

    return true; 
} 

ただし、リモートコントローラでメタキーを使用できないため、ShiftキーまたはCtrlキーまたはAltキーを使用しないとどうすればできますか?私はAndroid TVのリモコンで利用できるキーしか持っていません。特定のキーシーケンスを定義する方法はありますか(例:Left + Left + Up + OK)?

答えて

2

キープレスの現在の時刻を変数に保存できます。例えば

、すべての数字0、1、2が押された場合、あなたは次のことを行うことができ保つために:

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    switch (keyCode) { 
     case KeyEvent.KEYCODE_NUMPAD_0: 
      numpad0Time = Date.now(); 
      break; 
     case KeyEvent.KEYCODE_NUMPAD_0: 
      numpad1Time = Date.now(); 
      break; 
     case KeyEvent.KEYCODE_NUMPAD_0: 
      numpad2Time = Date.now(); 
      break; 
    } 

    checkKeys(); 

    return true; 
} 

private void checkKeys() { 
    long now = Date.now(); 
    if(now - numpad0Time < 500 && 
     now - numpad1Time < 500 && 
     now - numpad2Time < 500) { 
     stopLockTask(); 
    } 
} 

すべてのキーが500ミリ秒のタイムスタンプで押されたかどうかをチェックすることができます。この道を。

関連する問題