在蓝牙设备上处理长按媒体按钮播放/暂停
Posted
技术标签:
【中文标题】在蓝牙设备上处理长按媒体按钮播放/暂停【英文标题】:Handle Long Press of Media Button Play/Pause on bluetooth device 【发布时间】:2015-04-02 07:24:25 【问题描述】:我正在处理一个项目,我想处理长按蓝牙设备上的播放按钮的问题。 现在它只需单击一下即可。
public void onReceive(Context context, Intent intent)
String intentAction = intent.getAction();
if (!Intent.ACTION_MEDIA_BUTTON.equals(intentAction))
return;
KeyEvent event = (KeyEvent) intent.getParcelableExtra(Intent.EXTRA_KEY_EVENT);
if (event == null)
return;
int action = event.getAction();
if (event.getKeyCode() == 126 || event.getKeyCode() == 127)
// do something
if (action == KeyEvent.ACTION_DOWN)
Toast.makeText(context,"BUTTON PRESSED!", Toast.LENGTH_LONG).show();
if(event.isLongPress()==true)
Toast.makeText(context,"Finally long press worked!!", Toast.LENGTH_LONG).show();
方法 isLongPress() 总是返回 false。 请告诉我什么修改可以使这个程序工作。 在此先感谢:)
【问题讨论】:
【参考方案1】:检查您的 BT 设备的说明。耳机上的长按通话键通常意味着拒绝来电。我不确定 AVRCP 中是否定义了耳机上的长按播放键。
【讨论】:
有一个不同的按钮用于接听/拒绝电话 1.为什么密钥代码是 126 或 127? MEDIA_PLAY的key code是200,见androidxref.com/5.1.0_r1/xref/frameworks/base/data/keyboards/…。 2. 我不确定 AVRCP 中的按键是否支持长按。你可以试试看。 我很确定播放的数字是 126。由于我有一个通用的播放和暂停按钮,我也必须考虑 127(暂停)。你知道 isLongPress()这里使用的方法正确吗? 不知道BT设备长按PLAY键作为AVRCP控制器是否支持。要想得到答案,就得分析Android Framework中的Input manager。您可以在androidxref.com/5.0.0_r2/xref/frameworks/native/services/…中找到代码以上是关于在蓝牙设备上处理长按媒体按钮播放/暂停的主要内容,如果未能解决你的问题,请参考以下文章