覆盖后台服务中的音量按钮

时间:2014-02-20 12:04:48

标签: android

我正在创建一个应用程序,并希望在按下音量按钮四次时执行某些操作。我这样做,工作正常。

public boolean onKeyDown(int keyCode, KeyEvent event) 
{ 
   if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN || keyCode == KeyEvent.KEYCODE_VOLUME_UP) { 
       count++;
       if(count==4){
          dosomething();
          return true;
       }
       else
          return false;
   } 
}

问题是我的应用程序是在后台运行的,因为服务并不打算对用户输入作出反应,所以在这里可以解决的问题是如何在用户输入时调用我的函数{}}}应用程序在后台。它是应用程序中最重要的部分,因为否则会破坏应用程序的目的。它不一定是一个音量按钮,如果家庭或任何其他工作,那么它也很好。如果有人能帮助我,我们将非常感激。

2 个答案:

答案 0 :(得分:1)

以下是您可以做的事情:

  • 你不能从KeyEvents获得Service

  • 但您可以使用BroadcastReceivers来侦听特定内容 用户输入并在Service

  • 中使用它们

看看以下内容:

Android BroadCastReceiver for volume key up and down

BroadcastReceivers

Android BroadcastReceiver Tutorial

Broadcast Receiver within a Service

答案 1 :(得分:0)

Afaik,无法使用Service截取音量按钮,主页,后退,电源按键。

正如@SMR建议您只能将BroadcastReceiver用于音量和电源按钮。

BroadcastReceiver - android.media.VOLUME_CHANGED_ACTION在媒体量发生变化时执行。

但是当您的设备被锁定时,此接收器不会呼叫。如果要激活音量按钮,则必须在后台运行媒体文件,这不是一个好的解决方案。我建议你不要使用它来使音量按钮处于活动状态,因为它会耗尽设备的电池并改变设备的流行为。

您可以注册设备屏幕开启/关闭时执行的Screen_ONScreen_OFF BroadcastReceiver

链接:http://thinkandroid.wordpress.com/2010/01/24/handling-screen-off-and-screen-on-intents/