2017-01-22 80 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!!! 
}