Android - 在背景按下硬键的监听器

时间:2012-10-09 03:56:19

标签: android keyevent

Android提供了一些回调方法,可帮助我们处理应用内的关键事件。但是,如果我想在我的应用程序在后台运行时收听关键事件呢?例如。我想听搜索按钮上的长按事件来做一个特殊的功能。

1 个答案:

答案 0 :(得分:9)

KeyEvents只能由活动处理,因为它们是用户按键的界面,并且只有当它们位于前台时。即使在后台运行的服务也不会对用户输入做出反应。

但是通过使用服务,您可以找到解决方法。您可以通过注册BroadcastReceiver来创建响应硬键按事件的服务。例如,在AOSP音乐应用中,他们有一个服务(MediaPlaybackService),通过注册BroadcastReceiver(MediaButtonIntentReceiver)来响应音量键事件。

以下是注册接收器的代码:

mAudioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
ComponentName rec = new ComponentName(getPackageName(),
        MediaButtonIntentReceiver.class.getName());
mAudioManager.registerMediaButtonEventReceiver(rec);

即使音乐应用不在前台,这仍然有效。来自this的代码段回答。