如何检测服务和广播接收器中的关键事件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何检测服务和广播接收器中的关键事件相关的知识,希望对你有一定的参考价值。

当用户按下服务或广播接收器中的各种按钮时,如何获取关键事件?我特别感兴趣的是知道用户何时按下音量按钮,以便我可以在后台触发其他内容,例如录音机。

不幸的是,我的互联网搜索没有产生任何结果。

答案

像下面这样的东西应该工作: 从官方文件:

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"...>
    //code, like activities, etc

    <receiver android:name="com.example.test.VolumeBroadcast" >
        <intent-filter>
           <action android:name="android.intent.action.MEDIA_BUTTON" />
        </intent-filter>
</application>

接收器示例:

  public class VolumeBroadcast extends BroadcastReceiver{

      public void onReceive(Context context, Intent intent) {
           //check the intent something like:
           if (Intent.ACTION_MEDIA_BUTTON.equals(intent.getAction())) {
              KeyEvent event = (KeyEvent)intent.getParcelableExtra(Intent.EXTRA_KEY_EVENT);
              if (KeyEvent.KEYCODE_MEDIA_PLAY == event.getKeyCode()) {
                 // Handle key press.
              }
           }
      }
  }

你注册的方式是这样的:

 AudioManager am = mContext.getSystemService(Context.AUDIO_SERVICE);
// Start listening for button presses
am.registerMediaButtonEventReceiver(RemoteControlReceiver); 
// Stop listening for button presses
am.unregisterMediaButtonEventReceiver(RemoteControlReceiver);

以下页面: Audio Playback

以上是关于如何检测服务和广播接收器中的关键事件的主要内容,如果未能解决你的问题,请参考以下文章

如何使用警报管理器将数据从片段传递到广播接收器

在android的广播接收器中检测日变化事件

从广播接收器更改片段

从广播接收器更新片段中的列表视图

如何检测 LWUIT 表单中的按键事件?

接收包安装和卸载事件