I'm working on an android music player and want to skip tracks using long press volume keys.
I've found some implementations, but none of them worked as I want it.
I want to skip song on long press and change volume on short press (normal behavior).
In all tutorials/answers they handled long press with onKeyDown
and onKeyLongPress
but the short/normal press was only logged in onKeyUp
.
@Override
public boolean onKeyLongPress(int keyCode, KeyEvent event) {
Log.d(TAG, "long pressed");
switch(keyCode){
case KeyEvent.KEYCODE_VOLUME_UP:
songNumber++;
playSong(songs.get(songNumber));
return true;
case KeyEvent.KEYCODE_VOLUME_DOWN:
songNumber--;
playSong(songs.get(songNumber));
return true;
}
return super.onKeyLongPress(keyCode, event);
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
switch(keyCode){
case KeyEvent.KEYCODE_VOLUME_UP:
event.startTracking();
return true;
case KeyEvent.KEYCODE_VOLUME_DOWN:
event.startTracking();
return true;
}
return super.onKeyDown(keyCode, event);
}
@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
switch(keyCode){
case KeyEvent.KEYCODE_VOLUME_UP:
return true;
case KeyEvent.KEYCODE_VOLUME_DOWN:
return true;
}
return super.onKeyUp(keyCode, event);
}
This is my code but with this I can only skip songs and short press has no effect. So I have only one volume level :(
I have no idea what to try now. Help is appreciated. Thanks!
-v1r0x