我目前正在尝试监听何时按下电源按钮。最终,我希望在按两次电源按钮时运行一些代码,以检查屏幕是否锁定或解锁。我目前有这个:
@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);
}
该代码可以很好地为菜单键事件祝酒,但不会为电源键事件执行任何操作。有任何想法吗?
尽管我无法捕获硬件键,但我最终能够通过使用监听屏幕是否关闭或打开的广播接收器来猜测按下电源键。我用了:
if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) {
//do something
}
else if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) {
//do something else
}
通过几秒后超时的计数,我能够更加确定是否按下了电源按钮。这样,我让用户按电源按钮三次以确保正确的行为。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)