Detect two hardware button press simultaneously

前端 未结 2 1319
滥情空心
滥情空心 2020-12-11 21:43

I want to add listener when my two hardware button presses like volume button and power button. But i came to know that you can\'t override power button. Actually i want to

相关标签:
2条回答
  • 2020-12-11 22:17

    You need override onKeyDown and onKeyUp events to detect two buttons pressed.

     public boolean first,second;
    
     public boolean onKeyDown(int keyCode, KeyEvent event) {
    
        if (keyCode == KeyEvent.KEYCODE_POWER){
            first = true;
        }
        else if(keyCode == KeyEvent.KEYCODE_VOLUME_UP){
            second = true;
        }
    
        if(first && second) {
            // Two buttons pressed, Do your stuff
        }
        return true;
     }
    
     public boolean onKeyUp(int keyCode, KeyEvent event) {
    
        if (keyCode == KeyEvent.KEYCODE_POWER){
            first = false;
        }
        else if(keyCode == KeyEvent.KEYCODE_VOLUME_UP){
            second = false;
        }
        return true;
     }
    
    0 讨论(0)
  • 2020-12-11 22:35

    In your Activity. Try below code for Volume UP + Power key. You can reduce PRESS_INTERVAL to get effect like both buttons are pressed at the same time. Hope This Helps!

    private static final int PRESS_INTERVAL = 700;
    private long mUpKeyEventTime = 0;
    public boolean onKeyDown(int keyCode, KeyEvent event) {
            if (KeyEvent.KEYCODE_POWER == event.getKeyCode()) {            
                if ((event.getEventTime() - mUpKeyEventTime) < PRESS_INTERVAL) {
                    // This is to check if Volume UP key and Power key are pressed at the same time.
                    // Do the Task. Here You can add logic to take screenshot
                }
                return true;
            } else if (keyCode == KeyEvent.KEYCODE_VOLUME_UP) {
                return true;
            }
            return super.onKeyDown(keyCode, event);
        }
    
        public boolean onKeyUp(int keyCode, KeyEvent event) {
            if(KeyEvent.KEYCODE_VOLUME_UP == keyCode){
                mUpKeyEventTime = event.getEventTime();
            }
            return super.onKeyUp(keyCode, event);
        }
    
    0 讨论(0)
提交回复
热议问题