3

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();
            }
        }
    }
}
4

1 回答 1

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不会被调用)。

于 2013-12-25T19:46:33.033 回答