2013-02-13 51 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

相關問題