Android在广播接收器中捕获音量上/下按键?

时间:2011-07-15 20:08:46

标签: java android broadcastreceiver

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

@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        

}

但我希望即使应用程序没有打开也是可能的,因此我为什么要设置一个广播接收器,或者为了实现这一点而在服务中粘贴一些东西。

感谢您的帮助。

4 个答案:

答案 0 :(得分:2)

  

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

幸运的是,没有。

  

但是我希望即使应用程序没有打开也是可能的,因此我为什么要设置一个广播接收器,或者为了实现这一点而在服务中粘贴一些东西。

音量按钮无法使用。

  

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

那是相机按钮。如果前台活动没有使用相机按钮单击,则会转换为广播Intent,其他应用程序可以侦听。此行为对于相机和媒体按钮是唯一的,不会与任何其他硬件按钮一起使用。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

我没有这方面的经验,但你必须更深入地编写自己的硬件密钥拦截/处理函数,因为你将无法访问活动类中的那个。 / p>

答案 3 :(得分:0)

这可能不会做你想要的,但如果你做了一个IME,IME可以捕捉音量+/-按钮,并做任何想做的事情,比如重新映射到其他按钮。例如,我修改了一个姜饼风格的IME来转动音量+/-按钮来在Kindle和Overdrive应用程序中进行翻页/翻页。