6

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

4

1 回答 1

10

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

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

这是它注册接收器的代码:

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

即使音乐应用程序不在前台,这也有效。答案的代码片段。

于 2012-10-09T05:52:49.600 回答