我一直在搜寻互联网,却找不到解决方案。我想使用硬件按钮附件(蓝牙,NFC或什至简单的1/8英寸麦克风插孔)来执行等同于按GBoard上的“麦克风图标”并启动语音命令的操作。
也就是说,假设我们在一个突出显示文本输入字段的应用程序中。用户将按下硬件按钮,而GBoard将开始听取听写的声音,就像用户点击了麦克风图标一样。
有什么想法吗?有很多按钮解决方案,包括Android的内置辅助功能开关功能,但是我无法提出一种将按钮按下情况专门映射到“开始语音识别”软件按钮的方法。
答案 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);
}
}
}
}