Just wondering whether anyone could tell me how to capture the long keypress of the volume down key in android.
Elaborated question:
I wanted to create a
may be below code will help you:
@Override
public boolean onKeyLongPress(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN) {
// to your stuff here
return true;
}
return super.onKeyLongPress(keyCode, event);
}
Try with this command
adb shell input keyevent --longpress KEYCODE_VOLUME_DOWN
Note that to handle onKeyLongPress() you should track event onKeyDown(). and override both of them. please note the following examples.
@Override
public boolean onKeyDown(int keyCode, KeyEvent event){
if(keyCode==KeyEvent.KEYCODE_VOLUME_UP){
event.startTracking();
return true;
}
return super.onKeyDown(keyCode,event);
}
@Override
public boolean onKeyLongPress(int keyCode,KeyEvent event){
if(keyCode==KeyEvent.KEYCODE_VOLUME_UP){
//Do your stuff here
return true;
}
return onKeyLongPress(keyCode,event);
}
Also note that onKeyDown by default returns false. So by triggering onKeyDown() volume won't be increased.
I think that it is in theory possibly to accomplish the capturing of long key presses of the volume button, but is ill advised. The process would involve overriding the onKeyLongPress() method.
As to why it is ill advised: Volume Control in android application and How can I manage audio volumes sanely in my Android app?
It has been discussed before and basically, the keys have default behaviors that should not be overwritten because it is possible to "break the behavior of the volume keys".