android-intent - 拦截蓝牙耳机上的 VOICE_COMMAND

标签 android-intent android-manifest android-bluetooth android-search

我有一个应用程序,我希望在其中拿起蓝牙免提耳机上的按钮并执行我自己的功能。我认为这种类型的耳机可能与蓝牙音乐耳机的表现不同。

无论如何,按下按钮似乎会产生一个;

android.intent.action.VOICE_COMMAND

不是;
android.intent.action.MEDIA_BUTTON

就像按下有线有线耳机上的按钮一样。

这是由系统拾取并启动内置的谷歌语音搜索。我不要这个。当在我的应用程序中并按下时,我想处理和使用此操作。我不能!

如果我将此添加到 list 中的应用程序;
<intent-filter android:priority="2147483647">
    <action android:name="android.intent.action.VOICE_COMMAND" />
    <category android:name="android.intent.category.DEFAULT" />
</intent-filter>

然后我的应用程序启动,但你得到对话框来控制默认的 VOICE_COMMAND,这是我不想要的。如果我删除 DEFAULT,则按下按钮会直接进入 Google 搜索,而不会靠近我的应用程序。

如果我将 Intent 过滤器添加到 list 的 Receivers 部分,也不会调用广播接收器。所以我找不到捕获 VOICE_COMMAND Action 的方法。

拦截 VOICE_COMMAND 的正确/有效方法是什么,以便在事件运行时以自定义方式使用它,而无需默认使用系统语音搜索?

我看起来很难找到答案,但我找不到任何方法来以自定义方式处理应用程序中的 VOICE_COMMAND 操作。我很高兴按钮在其他时候开始谷歌搜索,但是当我的应用程序被使用时,我只想在按钮按下时执行特定于应用程序的事情。

想要做的事情似乎是合理的,肯定有可能吗?

最佳答案

如果我理解你的问题,你只需要在你的事件中处理这个 Action 。为此,只需将意图过滤器添加到 AndroidManifest.xml .我还指定了 singleTop防止 Activity 多次启动(在我的情况下,它可以多次启动 self):

<activity
    android:name="YourActivity"
    android:launchMode="singleTop">
    <intent-filter>
        <action android:name="android.intent.action.VOICE_COMMAND" />

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

然后在 YourActivity 中处理这个意图onNewIntent方法:
protected void onNewIntent(Intent intent) {
    if (intent != null && intent.getAction() != null && intent.getAction().equalsIgnoreCase("android.intent.action.VOICE_COMMAND")) {
        // write your logic here
    }
}   

关于android-intent - 拦截蓝牙耳机上的 VOICE_COMMAND,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32379473/

相关文章:

android - 如何在一个应用程序中设置两个不同的启动器名称和图标 (android)

android - 使用二维码作为带外 (OOB) channel 的蓝牙安全简单配对 (SSP)

android - 我可以在常规 Linux 发行版上使用 Android 蓝牙 API 吗?

java - Android 中与蓝牙设备的第二次连接失败

android - AlarmManager 立即执行我的 PendingIntent 而不是等待特定时间

android - 如果没有按钮,Espresso 不会记录任何 Intent

android - 通过 Intent 将编辑文本的文本移动到另一个 Activity 会引发异常

android - 为什么点击按钮后 Activity 没有改变?

android - Cordova Android构建版本代码与Gradle

android - RAD的Android应用中的自签名证书