【问题标题】:Android onKeyLongPressAndroid onKeyLongPress
【发布时间】:2012-11-03 19:22:59
【问题描述】:

我正在开发一个 android 音乐播放器,并想使用长按音量键跳过曲目。 我找到了一些实现,但它们都没有像我想要的那样工作。 我想在长按时跳过歌曲并在短按时更改音量(正常行为)。 在所有教程/答案中,他们使用onKeyDownonKeyLongPress 处理长按,但短/正常按仅登录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

【问题讨论】:

  • 您应该发布您的解决方案作为答案并接受它。
  • 我的解决方案是“编辑”下面的块。我怎么能接受?我是 stackoverflow 的新手
  • 只需将您的解决方案从您的问题剪切并粘贴到一个答案中,就会有一个大的绿色复选标记可供单击以接受它。这样,任何搜索类似问题的答案的人都可以看到这个问题已经从问题之外得到了回答。此外,任何认为您的答案有用的人都可以投票并给您一些声誉积分。 :)

标签: android volume


【解决方案1】:

好的,我找到了解决方案。不是最好的,但它有效。 OnKeyDownOnKeyLongPress 仍然相同,但 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);
}

【讨论】:

    猜你喜欢
    • 2013-11-21
    • 2012-10-08
    • 2018-02-28
    • 2015-09-15
    • 2011-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-06
    相关资源
    最近更新 更多