2017-01-22 6 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()で単一の比較を使用すると正しく動作することです。しかし私が& &を使って1つのif()で2つの比較を使用すると、うまくいきません。実際には、ボリュームアップとボリュームダウンのボタンが同時に押されたときにアクションを実行したい。同時に2つの物理的なボタンを扱う

+0

ヒント:**キーに**ダウンあなたは

須藤コードを呼び出す方法であること。一度に登録できるキーイベントは1つだけです –

答えて

0

各キーが押されると、onKeyDown()が2回発生します。必要なのは、0に初期化されたonKeyDownをインクリメントし、onKeyUpをデクリメントする2つの個別if()を使用することです。また、intが2のonKeyUpであるかどうかを確認します。

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!!! 
} 
関連する問題