2011-12-04 7 views
2

haventは解決策がまだ見つかりませんでした。 私は銀河系s2で見つけた「仮想」バックキーを長押ししたいと思います。"仮想"バックキーを長押しして検出

ユーザがボタンを押したときにonKeyDownイベントを検出しようとしましたが、ユーザがボタンを離しても仮想キーがonUpUpイベントを常に発しているときにonKeyUpイベントが検出されました。

また、私はonKeyLongPressメソッドをオーバーライドしようとしましたが、これは役に立たなかった。

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) 
{ 
    if (keyCode == KeyEvent.KEYCODE_BACK) 
    { 
     mBackKeyDownTime = event.getEventTime(); 
     return true; 
    } 
    return super.onKeyDown(keyCode, event); 
} 

@Override 
public boolean onKeyUp(int keyCode, KeyEvent event) 
{ 
    if(keyCode == KeyEvent.KEYCODE_BACK) 
    { 
     mBackKeyUpTime = event.getEventTime(); 
     final long delta = mBackKeyUpTime - mBackKeyDownTime; 
     return true; 
    } 
    return super.onKeyUp(keyCode, event); 
} 
+1

はあなたがしようとしているコードを投稿することができます...これでみては? – 500865

答えて

5

int LONG_PRESS_TIME = 5000; // Time in miliseconds 
    Handler handler; 
    Runnable longPressed; 

    handler = new Handler(); 
    longPressed = new Runnable() { 
    public void run() { 
    Log.d("LogTag", "Long Pressed"); 
    } 
}; 

    @Override 
    public boolean onKeyDown(int keyCode, KeyEvent event) 
    { 
    if (keyCode == KeyEvent.KEYCODE_BACK) 
    { 
      handler.postDelayed(longPressed, LONG_PRESS_TIME); 
     return true; 
    } 
    return super.onKeyDown(keyCode, event); 
} 

@Override 
public boolean onKeyUp(int keyCode, KeyEvent event) 
{ 
    if(keyCode == KeyEvent.KEYCODE_BACK) 
    { 
     handler.removeCallbacks(longPressed); 
     return true; 
    } 
    return super.onKeyUp(keyCode, event); 
} 
関連する問題