【问题标题】:Android capturing volume up/down key presses in broadcast receiver?Android在广播接收器中捕获音量增大/减小按键?
【发布时间】:2011-07-15 20:08:45
【问题描述】:

我正在尝试制作一个应用程序,用户可以在其中覆盖音量增大/减小按钮(以及屏幕开/关按钮 - 这可能吗?)的默认行为。无论如何,使用以下代码行我可以做到这一点:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
super.onKeyUp(keyCode, event);
if ((keyCode == KeyEvent.KEYCODE_VOLUME_UP)) {
    //this is where I can do my stuff
    return true; //because I handled the event
}
return false; //otherwise the system can handle it        

}

但我希望即使在应用程序未打开的情况下也能做到这一点,因此我想设置一个广播接收器或者在服务中添加一些东西来实现这一点。

感谢您的帮助。

【问题讨论】:

  • 我已经看到其他应用程序这样做了,就硬件按钮而言。例如,AndroSS 允许您覆盖相机硬件按钮来截取屏幕截图。这个应用程序需要 root 权限,所以我假设你可能必须追求同样的....
  • @JDS:我也有同样的需求,你能解决吗?

标签: java android broadcastreceiver


【解决方案1】:

以及屏幕开/关按钮 - 这可能吗?

还好没有。

但我希望即使在应用程序未打开时也能做到这一点,因此我想设置一个广播接收器或者在服务中添加一些东西来实现这一点。

音量按钮无法做到这一点。

例如,AndroSS 允许您覆盖相机硬件按钮来截取屏幕截图。

那是相机按钮。如果前台活动不消耗相机按钮点击,则会变成广播Intent,其他应用程序可以收听该广播。此行为是相机和媒体按钮所独有的,不与任何其他硬件按钮一起使用。

【讨论】:

    【解决方案2】:

    这不是一个好主意。这意味着每次按下音量增大/减小键时,无论您身在何处,您都会捕捉到它。如果我想改变我的铃声音量怎么办?媒体音量?将摇杆用于其他用途的应用程序?它只是不能很好地工作,只会激怒人们。另外,我不确定它是否可行。

    【讨论】:

    • 好吧,别担心那些其他问题,如果我制作一个人们想要使用的合理应用程序,它们就无关紧要了。更重要的是这是否可行。
    【解决方案3】:

    这是不可能的,因为“onKeyDown”方法覆盖了 Activity.onKeyDown()。因此,您必须有一个前台 Activity 才能接收这些函数调用。

    我没有这样做的任何经验,但是您必须更深入地编写自己的硬件密钥拦截/处理程序函数,因为您将无法从活动类中访问该函数。

    【讨论】:

    • 关于如何开始的任何想法?还是可能太多了?另外我想知道是否有任何广播接收器可以告诉我音量是否发生变化,这可能是一个便宜的黑客来做我想做的事。
    【解决方案4】:

    这可能无法满足您的需求,但如果您制作 IME,则 IME 可以捕获音量 +/- 按钮,并执行任何它想要的操作,例如重新映射到其他按钮按下。例如,我修改了 Gingerbread 风格的 IME 来调节音量 +/- 按钮,以便在 Kindle 和 Overdrive 应用程序中进行向上/向下翻页。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多