在Android java中,如何捕获长按蓝牙设备通话按钮?

发布于 2024-12-10 11:17:12 字数 38 浏览 0 评论 0原文

如何捕获(拦截)长时间按下蓝牙设备通话按钮(android)?

How do I catch (intercept) a long Bluetooth device call button press (android)?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

痴梦一场 2024-12-17 11:17:12

您正在寻找的是android.intent.action.VOICE_COMMAND,它是一个活动意图,而不是接收器意图。您的清单中需要包含以下内容:

<activity android:name="LongPressActivity">
    <intent-filter>
        <action android:name="android.intent.action.VOICE_COMMAND"/>
        <category android:name="android.intent.category.DEFAULT"/>
    </intent-filter>
</activity>

一旦您的活动开始,问题就会出现。语音命令应用程序中使用的大多数 API 都是隐藏的,因此您必须跳过火焰圈才能访问它们。使用反射,或者参见本系列文章数

You're looking for is android.intent.action.VOICE_COMMAND, and it's an Activity intent, not a Receiver intent. You need the following in your manifest:

<activity android:name="LongPressActivity">
    <intent-filter>
        <action android:name="android.intent.action.VOICE_COMMAND"/>
        <category android:name="android.intent.category.DEFAULT"/>
    </intent-filter>
</activity>

The problem arises once your activity starts. Most of the APIs used in the Voice Command application are hidden, so you have to jump through flaming hoops to access them. Either use reflection, or see this series of articles.

以酷 2024-12-17 11:17:12

您指的是 Intent.ACTION_CALL_BUTTON 操作,但不是长按?这是不存在的,Android 仅提供有限数量的标准操作,并且不包括长按物理按钮。

尽管当您自己的活动打开时可以通过重写活动类中的 onKeyLongPress 方法来实现。

@Override
public boolean onKeyLongPress(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_CALL) {
        // do your stuff here
        return true;
    }
    return false;
}

You mean the Intent.ACTION_CALL_BUTTON action but than for a long press? That doesn't exist, Android offers only a limited amount of standard actions and long press on physical buttons is not included.

Although if it is possible when your own activity is open, by overriding the onKeyLongPress method in your activity class.

@Override
public boolean onKeyLongPress(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_CALL) {
        // do your stuff here
        return true;
    }
    return false;
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文