2017-12-30 1 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 리모컨에서만 사용할 수있는 키가 있습니다. 특정 키 시퀀스 (예 : 왼쪽 + 왼쪽 + 위쪽 + 확인)를 정의하는 방법이 있습니까?

답변

2

키 누르기의 현재 시간을 변수로 유지할 수 있습니다. 모든 숫자는 0, 1, 2 누를 경우 예를 들어

는 다음 작업을 수행 할 수 유지 : 모든 키는 500 밀리 초 타임 스탬프에 누를 경우 확인할 수 있습니다

@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(); 
    } 
} 

이 방법.

관련 문제