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();
}
}
}
}
最佳答案
您可以通过将以下 intent-filter
添加到您的 AndroidManifest.xml
来对长按事件使用react:
<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
不会被调用)。
关于android - 如何捕捉 ACTION_MEDIA_BUTTON 的按住(长按),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19576164/