Android 安卓onKeyLongPress
我正在使用android音乐播放器,想用长按音量键跳过曲目。 我已经找到了一些实现,但是没有一个像我所希望的那样工作。 我想在长按时跳过歌曲,在短按时更改音量(正常行为)。 在所有教程/答案中,他们使用Android 安卓onKeyLongPress,android,volume,Android,Volume,我正在使用android音乐播放器,想用长按音量键跳过曲目。 我已经找到了一些实现,但是没有一个像我所希望的那样工作。 我想在长按时跳过歌曲,在短按时更改音量(正常行为)。 在所有教程/答案中,他们使用onKeyDown和onkeydongpress处理长按,但短按/正常按只记录在onkeydup中 @Override public boolean onKeyLongPress(int keyCode, KeyEvent event) { Log.d(TAG, "long pressed
onKeyDown
和onkeydongpress
处理长按,但短按/正常按只记录在onkeydup
中
@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
和onkeydongpress
仍然相同,但是onkeydup
现在是:
@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);
}
好的,我找到了一个解决方案。不是最好的,但它很有效。
OnKeyDown
和onkeydongpress
仍然相同,但是onkeydup
现在是:
@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);
}
您应该将您的解决方案作为答案发布并接受。我的解决方案是“编辑”下面的方框。我怎么能接受它?我是一个新手,不会将你的答案从你的问题中剪切粘贴到答案中,会有一个大的绿色复选标记来单击接受它。这样,任何搜索类似问题答案的人都可以看到这是从问题外部得到的答案。任何认为你的答案有用的人都可以upv注意,并给你一些声誉积分。:)你应该将你的解决方案作为答案发布并接受。我的解决方案是“编辑”下面的方框。我怎么能接受呢?我是一个新手,在你的问题和答案之间剪切粘贴你的解决方案,会有一个大的绿色复选标记点击它接受它。通过这种方式,任何寻找类似问题答案的人都可以看到,这是从问题之外得到的答案。此外,任何认为你的答案有用的人都可以投票给你,并给你一些声誉分数