On an Android device, where the only buttons are the volume buttons and a power button, I want to make the app react to presses on the power button (long and short). How is this done?
+2
A:
You could overwrite the public boolean onKeyDown(int keyCode, KeyEvent event)
and public boolean onKeyUp(int keyCode, KeyEvent event)
functions in your Activity class and test if keyCode
is equal to KeyEvent.KEYCODE_POWER
.
I haven't tested this, but I would assume the system treats this like it does the Home
key in that you cannot stop the system from receiving the key event, you can only observe that it occurs. To test this, try returning True
from the above functions and see if this catches the key event.
Aaron C
2010-09-13 18:08:19
+2
A:
On you activity add:
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (event.getKeyCode() == KeyEvent.KEYCODE_POWER) {
// do what you want with the power button
return true;
}
return super.onKeyDown(keyCode, event);
}
Though... this kind of keys are somehow special... not sure if it can give problems to you.
Cristian
2010-09-13 18:08:28
A:
Solution:
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
if (event.getKeyCode() == KeyEvent.KEYCODE_POWER) {
Intent i = new Intent(this, ActivitySetupMenu.class);
startActivity(i);
return true;
}
return super.dispatchKeyEvent(event);
}
Lars D
2010-09-15 07:29:02