2017-01-22 55 views
0
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()中使用单一比较时,它可以正常工作。但是当我使用2个比较单个if()使用& &时,它不起作用。实际上,我想在同时按下音量增大和音量减小按钮时执行操作。同时处理两个物理按钮

+0

提示:在** **键向下。一次只能注册一个关键事件 –

回答

0

当每个按键被按下时,onKeyDown()会被触发两次。你需要的是使用两个单独的if()s,它增加一个int onKeyDown,并将其初始化为零,然后递减onKeyUp,然后每次检查int是否等于2 onKeyUp,如果true执行一个操作,在方法调用

须藤代码:

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!!! 
}