【问题标题】: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。 请告诉我什么修改可以使这个程序工作。 在此先感谢:)

【问题讨论】:

    标签: android bluetooth keyevent long-press


    【解决方案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/…中找到代码
    猜你喜欢
    • 1970-01-01
    • 2023-03-19
    • 2016-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-25
    • 1970-01-01
    相关资源
    最近更新 更多