如何捕捉并按住(长按)ACTION_MEDIA_BUTTON

时间:2013-10-24 20:38:11

标签: android broadcastreceiver

keydown文档说明如果按住它就会再次发送keydown,但是如果按住媒体键我根本不会收到任何通知。有没有办法检测到这个?它实际上是谷歌(现在?)搜索语音输入 - 也许有一个广播表明我可以收到这个?

这是我BroadcastReceiver的接收者:

@Override
public void onReceive(Context context, Intent intent)
{
    String intentAction = intent.getAction();
    int SoundID = 0;

    if (Intent.ACTION_MEDIA_BUTTON.equals(intentAction))
    {
        KeyEvent event = (KeyEvent)intent.getParcelableExtra(Intent.EXTRA_KEY_EVENT);
        if (event != null)
        {               
            int action = event.getAction();

            if (action == KeyEvent.ACTION_DOWN)
            {
                Log.d("Hi", "MEDIA keydown r" + event.getRepeatCount());

                if (event.getRepeatCount() == 1)
                    DoSomethingMagical();
                else if (event.getRepeatCount() == 0)
                    DoSomethingSpecial();
            }
        }
    }
}

1 个答案:

答案 0 :(得分:1)

您可以通过将以下intent-filter添加到AndroidManifest.xml来对长按事件作出反应:

<intent-filter>
  <action android:name="android.speech.action.WEB_SEARCH"/>
  <category android:name="android.intent.category.DEFAULT"/>
</intent-filter>

不幸的是,这不会像android.intent.action.MEDIA_BUTTON类型的操作一样处理(您的BroadcastReceiver将不会被调用)。