2012-08-15 45 views
5

在通話過程中是否可以運行SpeechRecognizer?我這樣做了:在通話過程中運行SpeechRecognizer

  • BroadcastReceiver處理電話狀態變化(例如摘機)。
  • SpeechRecognizer在當前(主)線程中啓動,因爲它只能在主線程中啓動。應用上下文用於識別器(給予廣播接收器的當前上下文,不能開始使用)

但不幸的是,另一方的人聽不到我(語音識別雖然工作正常)。在遠處,識別器已經「消耗」了我的聲音並且不會發送它。

我知道在調用過程中在主線程中做事是危險的,但有沒有辦法在調用過程中以某種方式運行識別器?

更新:我正在嘗試TelephonyManager聽衆而不是BroadcastReceiver,但一些內部服務與NPE一起打擊。

回答

2

AFAIK語音通話永遠不會從Android端處理。應用程序處理器或通信處理器在任何給定時間都不控制流。通常只要語音通話開始,麥克風和耳機流控制就會發送給通信處理器。奇怪你的情況應用程序處理器正在控制。這看起來是一個錯誤。

音頻流由通信處理器直接處理(這很有意義,因爲浪費了處理的時間,一旦在應用程序處理器中執行兩次,並且一次在通信處理器中,最終將處理該呼叫)。所以我不認爲這是可能的。

+0

有些應用程序可以記錄您的通話(您只能聽到您自己的單詞),所以我認爲應該可以通過某種方式進行通話並執行演講。可能這些處理器可以鏈接? – Bozho 2012-08-15 21:19:47

+0

你可以指向谷歌播放應用程序頁面,因爲我還沒有找到任何 – nandeesh 2012-08-15 21:31:06

+0

我曾經有一個應用程序記錄我的電話,甚至非常沉默版本的其他參與者(可能是從揚聲器可以聽到的一個並進入麥克風)。我不再擁有它了(沖刷我的手機),我不記得它是哪個「錄音」應用程序,但我確實做了一些錄音。 – Bozho 2012-08-15 21:33:01

0

根據手機型號的不同,如果語音識別器是在服務中實現的,則有可能。 HTC Rezound與android v4並無任何問題,但摩托羅拉Bionic與android v2.3不兼容,音頻管理器崩潰。即使使用HTC,識別器也無法聽到其他手機上的人。隨着揚聲器開啓,它會使報告錯誤不匹配。