2012-08-02 289 views
1

我試圖建立應用程序,它記錄了從麥克風爲後來的音頻處理過程中靜音。從麥克風錄製的音頻語音通話

一切工作相當好,除了以下問題: 在語音通話(進出)期間錄製的文件沒有音頻數據,它只包含NULL。

我使用AudioRecorder和MediaRecorder,都有同樣的問題。 問題是,如果這是正常的API行爲或我錯過了什麼?

這裏一些額外的信息: 權限:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
<uses-permission android:name="android.permission.RECORD_AUDIO" /> 

SDK:的minSdkVersion = 「9」 targetSdkVersion = 「15」

我在Nexus S的測試我的應用程序Jelly Bean系統。

在此先感謝!

PS如果有人需要更多的具體細節,請讓我知道。

編輯

OK,所有的回答表明,這是一種正常的行爲,但我仍然感到困惑,因爲我可以找到很多的應用程序,記錄語音呼叫,使用麥克風。錄製語音通話不是我的意圖,但我認爲即使在語音通話期間我也可以使用麥克風。 有什麼建議嗎?

編輯

我只是測試上的Galaxy S薑餅的應用和它的工作!現在我真的很困惑,並開始理解什麼詞「切分」是指...

+0

這是正常的。您無法錄製,因爲電話會獨佔控制麥克風。 – Kaediil 2012-08-02 11:35:22

+0

你可以命名一些可以記錄呼叫的應用嗎? – nandeesh 2012-08-03 13:09:00

+0

只是在谷歌播放與「記錄呼叫」關鍵字搜索。有4星評級和數千次下載的應用程序,這意味着至少這部分可能。 – VadimK 2012-08-03 13:39:28

回答

1

我不會把這種正常的,但你在這裏輸入特定於平臺的行爲。在語音通話過程中使用AudioSource.MIC進行錄音可以在某些設備上使用,但在其他設備上不能使用。

僅舉,我已經對爲什麼這個功能可能已經禁用碰上自己的幾個原因:

  • 有些平臺只支持單一的採樣率在任何特定時間捕捉麥克風音頻。而且,由於語音通話比別的優先(這手機畢竟)和語音通話需要8或16 kHz採樣率,約當你有一個正在進行中的記錄進行語音通話的開始可能是什麼做的決定簡單地靜音錄音,以便當您的應用程序認爲它獲得了44.1 kHz的頻率時,您的錄音不會被8 kHz數據填充。

  • 如果您在語音通話有些平臺可能會停止從麥克風傳送音頻數據,有效地屏蔽了語音通話過程中上行留下記錄空閒(停止,但沒有公佈)。爲了避免這種情況,供應商可能會認定語音通話期間的錄音實際上不會路由到任何輸入設備,而只是填充零。

聲明:我沒有與Nexus S合作過,所以我不知道在特定設備上是什麼原因。

+0

謝謝,幫助我理解爲什麼發生這種情況。 – VadimK 2012-08-06 14:21:47

0

我認爲這是正常的行爲,音頻數據,同時呼叫接通絕不會通過應用處理器的Android運行進行處理。通常音頻芯片組會將其切換爲來自Modem的流。

+0

謝謝。請參閱我的問題的編輯部分。 – VadimK 2012-08-03 12:29:50

0

從理論上講,你可以從調用本身得到一個feed(http://stackoverflow.com/questions/4194342/how-can-i-record-voice-and-record-call-in-android),但大多數製造商顯然不支持這一點。

+0

謝謝。請參閱我的問題的編輯部分。 – VadimK 2012-08-03 12:30:16