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();
}
}
}
}
答案 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
将不会被调用)。