2016-08-30 44 views
4

有了這個代碼打開語音輸入與命令的聲音:安卓:如何從我的應用程序

private void promptSpeechInput() { 
    Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH); 
    intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, 
      RecognizerIntent.LANGUAGE_MODEL_FREE_FORM); 
    intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, Locale.getDefault()); 
    intent.putExtra(RecognizerIntent.EXTRA_PROMPT, 
      getString(R.string.speech_prompt)); 
    try { 
     startActivityForResult(intent, REQ_CODE_SPEECH_INPUT); 
    } catch (ActivityNotFoundException a) { 
     Toast.makeText(getApplicationContext(), 
       getString(R.string.speech_not_supported), 
       Toast.LENGTH_SHORT).show(); 
    } 
} 

用型動物的方式(按鈕事件,手勢,生命週期),我可以調用這個方法來打開語音輸入提示就像我在谷歌搜索字段中的麥克風圖標中點擊一樣。 好吧,那很好。

但現在,我需要使用命令語音來調用此方法。與現在谷歌相同,我們說「Ok Google」,並出現語音輸入提示。我想在我的應用程序內執行此操作。例如,我在主要活動中,我說「聽我說」並調用方法promptSpeechInput。

我該怎麼做?

感謝您的幫助。

回答

1

通過Voice Actions API,您的應用可以註冊爲system actions,其中一個是「搜索」(因此您可以在APP上搜索某個問題或命令)。

在過去,一些開發者能夠submit a custom voice action request。經批准後,用戶可以通過語音與您的應用進行特定操作。這不再是一個選項。

+0

謝謝@LychmanIT,我已經測試過它,這工作正常。是不是我認爲的解決方案的最佳方式,但我可以這樣做: 我可以在所有屏幕中啓用「Ok Google」。當用戶在應用程序中時,他現在可以使用Google進行搜索,並且我可以獲取該命令並調用一個方法。 似乎不是一個美麗的解決方案,但用戶只能使用語音命令來操作應用程序。 –

+0

我創建了一個測試項目,並且遇到問題。搜索工作正常,使用英語,但我來自巴西,即使在YouTube上搜索也無法正常工作。所以,我會嘗試其他方式。 –

+0

是的,它似乎@ Simon_Phoenix的選項比我的好。祝你好運:) – LychmanIT

3

據我所知,你不能宣佈你自己的喚醒詞 - 你被困在谷歌。您可以使用LychmanIT引用的語音操作API,但那隻會在說出OK Google之後處理意圖。

CMUSphynx可能值得研究。它允許您定義自定義偵聽器,但不是Google針對此工作流程制定的解決方案,因此可能不適合您,具體取決於您的要求。儘管我已經取得了一些成功的原型 - 它工作得很好。

+0

謝謝@SimonPhoenix,這似乎對我很有幫助。我將用它創建一個測試項目,我和我會來警告你。 –