我正在尝试按下电源按钮时听.最后,我希望在按两次电源按钮时运行一些代码,以检查屏幕是锁定还是解锁.我目前有这个:
  @Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);//prevent phone from being locked
}
@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) {
    switch (keyCode) {
        case KeyEvent.KEYCODE_POWER:
        {
            Toast.makeText(getBaseContext(), "Power button pressed", Toast.LENGTH_LONG).show();
            return true;
        }
        case KeyEvent.KEYCODE_MENU:
            Toast.makeText(getBaseContext(), "Menu Button Pressed", Toast.LENGTH_LONG).show();
            return true;
    }
    return super.onKeyDown(keyCode, event);
}
Run Code Online (Sandbox Code Playgroud)
该代码可以很好地为菜单keyevent干杯,但不会为电源键事件做任何事情.有任何想法吗?
虽然我无法捕获硬件密钥,但我最终还是能够通过使用广播接收器来猜测是否按下了电源键,该广播接收器监听屏幕是关闭还是打开.我用了:
            if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) {
                    //do something 
            }
            else if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) {
                    //do something else
            }
Run Code Online (Sandbox Code Playgroud)
我能够更加确定按下电源按钮的计数会在几秒后超时.这样我就让用户按下电源按钮三次以确保正确的行为.
|   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           19245 次  |  
        
|   最近记录:  |