按下蓝牙设备按钮应触发应用程序中的 Onclick 侦听器

2023-11-25

我正在尝试制作一个应用程序,当在配对的蓝牙设备上按下按钮时,该应用程序会触发应用程序中的单击侦听器。经过几个小时的谷歌搜索后,我认为我无法将蓝牙设备按钮的键码发送到广播接收器,如果键码匹配,那么我可以调用点击监听器,或者我的方法和理解可能是错误的,所以有人可以指导我吗或者指出我正确的方法?提前致谢

蓝牙设备:蓝牙自拍遥控AB快门3

我想要这样的东西http://www.barbatricks.com/en/android-en/remap-ab-shutter-3-selfie-remote/

我已尝试以下链接供参考但没有成功

如何使用Android从蓝牙耳机捕获关键事件

ACTION_MEDIA_BUTTON 的广播接收器不起作用

如何在 Android 应用程序中检测蓝牙通话/媒体按钮按下

http://blog.phonedeveloper.com/2015/04/how-to-receive-bluetooth-broadcast.html


自拍遥控器在 Android 中显示为蓝牙键盘,对吗?或者一般作为 HID(人机接口设备)。

如果是这种情况,请添加到 Activity 的onCreate();

takeKeyEvents(true);

这是解释的在文档中:

要求关键事件参与此活动。如果您的 Activity 没有具有焦点的视图,但 Activity 仍需要 处理关键事件的机会。

覆盖onKeyUp()(在您的活动中)并将一些操作分配给您要使用的键:

@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {

    switch (keyCode) {

        case KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE:
            Log.d(this.getClass().getName(), "KEYCODE_MEDIA_PLAY_PAUSE");
            // Do something...

            return true;
        case KeyEvent.KEYCODE_MEDIA_PREVIOUS:
            Log.d(this.getClass().getName(), "KEYCODE_MEDIA_PREVIOUS");
            // Do something...

            return true;
        case KeyEvent.KEYCODE_MEDIA_NEXT:
            Log.d(this.getClass().getName(), "KEYCODE_MEDIA_NEXT");
            // Do something...

            return true;
        case KeyEvent.KEYCODE_VOLUME_DOWN:
            Log.d(this.getClass().getName(), "KEYCODE_VOLUME_DOWN");
            // Do something...

            return true;
        case KeyEvent.KEYCODE_VOLUME_UP:
            Log.d(this.getClass().getName(), "KEYCODE_VOLUME_UP");
            // Do something...

            return true;
        case KeyEvent.KEYCODE_ENTER:
            Log.d(this.getClass().getName(), "KEYCODE_ENTER");
            // Do something...

            return true;
        default:
            return super.onKeyUp(keyCode, event);
    }
}

The onKeyUp() method 已解释:

当释放按键且未由任何视图处理时调用 活动内部。例如,当光标按下时按键 在 TextView 内部不会触发该事件(除非它是 导航到另一个对象)因为 TextView 处理它自己的键 按下。

默认实现处理 KEYCODE_BACK 来停止活动 然后回去。

只需让系统处理您不想捕获的任何键即可。这是由default block.

只需检查来自遥控器的键码是什么并删除不必要的情况。这些只是遥控器可能发送的一些候选键码。

当然,任何适用于一般操作键盘的内容也适用于遥控器。 (假设它是 HID。但通常都是这样。带按钮的蓝牙耳机则完全不同。)

这将允许您在自己的应用程序中使用遥控器。我不明白为什么应该涉及 BroadcastReceivers 或 onClickListeners,但也许我错过了这一点。

如果您想要在后台运行并将按键事件发送到其他应用程序/将遥控器的按键重新映射到其他按键代码以触发系统服务,那么这也是一个不同的故事。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

按下蓝牙设备按钮应触发应用程序中的 Onclick 侦听器 的相关文章

随机推荐