如何捕捉 ACTION_MEDIA_BUTTON 的长按操作

3

按下键盘的文档说明如果按下键盘不放会重复发送keydown事件,但是如果按住媒体键则根本没有通知。有没有办法检测到这个问题?实际上它将转到Google(现在?)搜索语音输入 - 也许有一种广播可以指示正在发生的事情,我可以接收到吗?

这里是我的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个回答

1

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接