2013-02-13 61 views
1

这个想法是在一个按钮上按下用户语音输入并将其传递给应用程序内部的搜索。由于设备限制,我们使用SearchViewCompat而不是有用的SearchView。我已经能够使用this link获取语音输出,但是没有简单的方法将文本传递到搜索栏。
搜索视图本身显示为一个视图(所以没有setText()),但如果我可以只说“在键盘上使用麦克风键”或者一旦搜索栏出现,我认为它可能工作。任何帮助将不胜感激。
谢谢, SGB。有没有一种方法可以在软键盘上以编程方式启动语音输入?

回答

1

对不起已经回答了我自己的问题,但在这里它是: 我把整个“抢从声音输入一个字符串数组”关中的问题,然后链接的,而不是刚刚开始搜索与onSearchRequested(),我做到这一点:

startSearch(grabString, false, null, false); 


public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if(aViaBuildConfig.MIC_KEY) { 
     DebugLog.e(TAG , "onDown event : " + event); 
     DebugLog.e(TAG , "onDown keyCode: " + keyCode); 
     if(keyCode == Constants.MIC_KEY) { 
      onSearchRequested(); 
      Intent voiceIntent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH); 
      voiceIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_WEB_SEARCH); 
      try { 
       startActivityForResult(voiceIntent, Constants.RESULT_SPEECH); 
      } catch (ActivityNotFoundException ex) { 
       DebugLog.e(TAG, "Not found excpetion onKeyDown: " + ex); 
      } 
     } 
     return super.onKeyDown(keyCode, event); 
    } 
    return false; 
} 


protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    switch (requestCode) { 
     case Constants.RESULT_SPEECH: 
      super.onActivityResult(requestCode, resultCode, data); 
      if (resultCode == RESULT_OK && null != data) { 
       ArrayList<String> spokenSearch = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS); 
       DebugLog.e("Glenn: " , "Speech = " + spokenSearch); 
       String grabString = spokenSearch.get(0); 
       startSearch(grabString, false, null, false); 
      } 
      break; 
    } 
} 
+0

对缺乏评论感到抱歉:第1部分只是抓住keyDown并启动“获取coive东西“以android的方式进行活动,第二个是抓住答案并将其传递给搜索。关键是startSearch(grabString,false,null,false); – 2013-02-15 21:19:50

2

不,这是不可能的。至少,没有简单方式来启动语音输入,而不使用RecognitionListener或手动点击软键盘上的语音输入按钮。

据我所知,this post解释了如何将语音集成到实际使用此库的IME中:google-voice-typing-integration。它可能会激励你一点。

+0

嗯,这不是我真正想要的,但这是一些很棒的信息。我可以使用RecognitionListener作为第二个或第三个选项。 – 2013-02-14 15:22:11

+0

您可以创建一个包含按钮的视图来触发语音输入。然后在适当的时候调用它,比如'EditText.OnClickListener'。看看这个问题:http://stackoverflow.com/questions/1896939/android-app-specific-soft-keyboard – 2013-02-14 18:55:17

相关问题