【问题标题】:Override volume button in background service [duplicate]覆盖后台服务中的音量按钮[重复]
【发布时间】:2014-03-21 08:44:24
【问题描述】:

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

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

问题是我的应用程序在后台运行,并且由于服务不打算对用户输入做出反应,所以在这里可以解决什么问题,我如何调用我的函数让用户输入当应用程序是 dosomething()在背景中。它是应用程序中最重要的部分,否则应用程序的目的就会被破坏。它不一定是音量按钮,如果家庭或任何其他作品也可以。如果有人可以帮助我,我将不胜感激。

【问题讨论】:

标签: android


【解决方案1】:

您可以这样做:

  • 你不能从Service得到KeyEvents是正确的。

  • 但您可以使用BroadcastReceivers 来监听特定的 用户输入并在您的Service 中使用它们。

请看以下内容:

Android BroadCastReceiver for volume key up and down

BroadcastReceivers

Android BroadcastReceiver Tutorial

Broadcast Receiver within a Service

【讨论】:

  • 谢谢你解决了这么多问题
【解决方案2】:

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/

【讨论】:

    猜你喜欢
    • 2012-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-24
    • 1970-01-01
    相关资源
    最近更新 更多