我研究了ACTION_MEDIA_BUTTON
的意图,并试图使用它,并拦截按钮并使用吐司在屏幕上显示它们。我注册了接收器拦截两个目的:如何拦截Android中耳机上的按钮?
ACTION_HEADSET_PLUG
- 插上耳机ACTION_MEDIA_BUTTON
- 如果接收到按钮按下
这是我的主要活动进行:
IntentFilter mediaFilter = new IntentFilter(Intent.ACTION_MEDIA_BUTTON);
mediaFilter.setPriority(10000);
registerReceiver(_receiver, new IntentFilter(Intent.ACTION_HEADSET_PLUG));
registerReceiver(_receiver, mediaFilter);
这是r的部分eceiver处理该按钮按下:
if (action.equals(Intent.ACTION_HEADSET_PLUG))
{
Toast.makeText(context, "earphones activity",Toast.LENGTH_SHORT).show();
if (intent.getExtras().getInt("state")==1)//if plugged
Toast.makeText(context, "earphones plugged",Toast.LENGTH_LONG).show();
else Toast.makeText(context, "earphones un-plugged",Toast.LENGTH_LONG).show();
}
else
if (action.equals(Intent.ACTION_MEDIA_BUTTON))
{
Toast.makeText(context, "button pressed",Toast.LENGTH_LONG).show();
key=intent.getExtras().getString("EXTRA_KEY_EVENT");
Toast.makeText(context, key,Toast.LENGTH_LONG).show();
}
现在处理耳机插件和拆除工作正常,但拦截按按键部分不是一部分。
是否有任何理由处理ACTION_MEDIA_BUTTON
不起作用的代码?
是否有我需要拦截这种意图的特殊许可?
我正在使用三星Galaxy S2来测试代码。
我看过所有类似的帖子,并试过一切。不幸的是似乎没有任何工作
你在测试什么设备? – slayton 2012-01-29 21:12:21
samsung galaxy s 2 – 2012-01-29 21:26:23
我不确定,但它可能是TouchWiz没有正确实现ANDROID_MEDIA_BUTTON意图... – slayton 2012-01-29 21:30:50