同时处理两个物理按钮

时间:2017-01-22 19:36:32

标签: android

public boolean onKeyDown(int keyCode, KeyEvent event){
    if(keyCode==KeyEvent.KEYCODE_VOLUME_DOWN && keyCode==KeyEvent.KEYCODE_VOLUME_UP )               
        textView.setText("both buttons are  pressed");                 
    return true;                           
} 

问题是,当我在if()中使用单一比较时,它可以正常工作。但是当我在单个if()使用&&时使用2比较那它不起作用。实际上我想在同时按下音量增大和音量减小按钮时执行动作。

1 个答案:

答案 0 :(得分:0)

按下每个键时,

onKeyDown()被触发两次。你需要的是使用两个单独的if()s,它们将一个初始化为零的int onKeyDown递增,然后将它递减到onKeyUp,然后每次检查onKeyUp中的int是否等于2,如果为true则执行你需要的动作在你打电话的方法

Sudo代码:

int i = 0;
public void onKeyDown(int keyCode, KeyEvent event){

   if(keyCode==KeyEvent.KEYCODE_VOLUME_DOWN){

     i++;
    }

   if(keyCode==KeyEvent.KEYCODE_VOLUME_UP ){
     i++;
   }

    if(i == 2 ){
      action();
    }

}

public void onKeyUp(int keyCode, KeyEvent event){

if(keyCode==KeyEvent.KEYCODE_VOLUME_DOWN){
   i--;
  }

 if(keyCode==KeyEvent.KEYCODE_VOLUME_UP ){
    i--;
  }
}


 private void action(){

  // AND ACTION!!!
}