Android: прослушивание нажатия клавиши питания
В настоящее время я пытаюсь слушать, когда нажата кнопка питания. В конечном счете, я хотел бы, чтобы некоторый код запускался, когда кнопка питания дважды нажата, чтобы проверить, заблокирован или разблокирован экран. В настоящее время у меня есть это:
@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);
}
Код отлично работает для тоста для меню keyevent, но ничего не делает для события power key. Любые идеи?
Ответы
Ответ 1
Хотя я не смог захватить аппаратный ключ, я понял, что клавиша питания была нажата, используя широковещательный приемник, который слушает, выключен или выключен экран. Я использовал:
if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) {
//do something
}
else if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) {
//do something else
}
Я был уверен, что кнопка питания нажата, имея счет, который будет истекать через пару секунд. Таким образом, я могу нажать кнопку питания три раза, чтобы обеспечить правильное поведение.
Ответ 2
AFAIK, это невозможно для клавиши Power
.
Вы можете обратиться к этому ответу: http://groups.google.com/group/android-developers/browse_thread/thread/a4db4def1bdaa8d9
Ответ 3
Я использовал андроидные аннотации Аннотации @Receiver.
Добавьте это в свою аннотированную @Activity активность:
@Receiver(actions = Intent.ACTION_SCREEN_OFF)
protected void onPowerButtonPressed() {
// add your code
}