我正在开发一个Android音乐播放器,并希望使用长按音量键跳过曲目。
我找到了一些实现,但是没有一个能按我的意愿工作。
我想长按时跳过歌曲,而短按时更改音量(正常行为)。
在所有教程/答案中,他们使用onKeyDown
和onKeyLongPress
处理长按,但短/普通新闻仅在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);
}
这是我的代码,但是我只能跳过歌曲,短按不起作用。所以我只有一个音量级别:(
我不知道现在要尝试什么。感谢帮助。
谢谢!
-v1r0x
最佳答案
好的,我找到了解决方案。不是最好的,但是可以。OnKeyDown
和OnKeyLongPress
仍然相同,但是OnKeyUp
现在是这样的:
@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
if(!event.isCanceled()){
switch(keyCode){
case KeyEvent.KEYCODE_VOLUME_UP:
audioManager.adjustStreamVolume(AudioManager.STREAM_MUSIC, AudioManager.ADJUST_RAISE, AudioManager.FLAG_SHOW_UI);
break;
case KeyEvent.KEYCODE_VOLUME_DOWN:
audioManager.adjustStreamVolume(AudioManager.STREAM_MUSIC, AudioManager.ADJUST_LOWER, AudioManager.FLAG_SHOW_UI);
break;
}
}
return super.onKeyUp(keyCode, event);
}