硬件按钮开始语音识别

时间:2019-09-17 19:40:30

标签: android accessibility voice-recognition gboard

我一直在搜寻互联网,却找不到解决方案。我想使用硬件按钮附件(蓝牙,NFC或什至简单的1/8英寸麦克风插孔)来执行等同于按GBoard上的“麦克风图标”并启动语音命令的操作。

也就是说,假设我们在一个突出显示文本输入字段的应用程序中。用户将按下硬件按钮,而GBoard将开始听取听写的声音,就像用户点击了麦克风图标一样。

有什么想法吗?有很多按钮解决方案,包括Android的内置辅助功能开关功能,但是我无法提出一种将按钮按下情况专门映射到“开始语音识别”软件按钮的方法。

1 个答案:

答案 0 :(得分:-1)

此按钮用于在媒体会话期间控制媒体播放器的播放或控制电话。此点击被android操作系统拦截。因此,拦截此过程的方法是创建虚拟媒体会话并使用MediaButtonReceiver处理硬件按钮单击。但是,任何应用程序(例如,运行YouTube或Google Play音乐)都可能会抢占您的媒体按钮焦点。

编辑: 开始语音识别

public Intent getRecognizeIntent(String promptToUse, int maxResultsToReturn)
{
    Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
    intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,
            RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
    intent.putExtra(RecognizerIntent.EXTRA_MAX_RESULTS, maxResultsToReturn);
    intent.putExtra(RecognizerIntent.EXTRA_PROMPT, promptToUse);
    return intent;
}

startActivityForResult(recognizeIntent, SpeechGatherer.VOICE_RECOGNITION_REQUEST_CODE);

protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
    Log.d("Speech", "GOT SPEECH RESULT " + resultCode + " req: "
        + requestCode);
    if (requestCode == SpeechGatherer.VOICE_RECOGNITION_REQUEST_CODE)
    {
        if (resultCode == RESULT_OK)
        {
            ArrayList<String> matches = data
                            .getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
            Log.d(D_LOG, "matches: ");
            for (String match : matches)
            {
                Log.d(D_LOG, match);
            }
        }
    }
}