【问题标题】:how to capture long press volume down key in android?如何在android中捕获长按音量减小键?
【发布时间】:2011-03-11 06:19:43
【问题描述】:

只是想知道是否有人可以告诉我如何在android中捕获音量减小键的长按键。

详细问题:

我想创建一个 BroadcastReceiver 来接收音量长按键事件。 (没有任何 UI 交互)。我知道搜索按钮是可能的。它可用于音量键吗?

谢谢

【问题讨论】:

  • 我想创建一个 BroadcastReceiver 来接收音量长按键事件。 (没有任何 UI 交互)。我知道搜索按钮是可能的。它可用于音量键吗? -谢谢

标签: android


【解决方案1】:

下面的代码可能会对你有所帮助:

@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);
}

【讨论】:

  • 谢谢,是否可以将 KEYCODE_VOLUME_DOWN 放入 BroadcastReceiver?比如
  • 我不认为这可能
  • 嗨,我不知道你到底有什么要求,但是当你在任何活动中遇到事件时,你可以做的是使用上面的方法,你可以创建一个长按音量键的自定义广播并在 BL 中使用它
  • 如何在服务中做到这一点?
  • 对不起,您不能在服务中这样做
【解决方案2】:

请注意,要处理 onKeyLongPress(),您应该跟踪事件 onKeyDown()。并覆盖它们。 请注意以下示例。

 @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);
}

还要注意 onKeyDown 默认返回 false。所以通过触发 onKeyDown() 音量不会增加。

【讨论】:

    【解决方案3】:

    我认为理论上可能完成对音量按钮长按键的捕获,但不建议这样做。该过程将涉及覆盖 onKeyLongPress() 方法。

    为什么不建议这样做:Volume Control in android applicationHow can I manage audio volumes sanely in my Android app?

    之前已经讨论过,基本上,按键具有不应被覆盖的默认行为,因为可能会“破坏音量键的行为”。

    【讨论】:

      【解决方案4】:

      试试这个命令

      adb shell 输入keyevent --longpress KEYCODE_VOLUME_DOWN

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-08-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-01-31
        • 2015-02-10
        相关资源
        最近更新 更多