Android之關於電話錄音原理,目前的方法還是隻能錄MIC
雖然MediaRecorder裡面可以設定recodeRecorder.setAudioSource(MediaRecorder.AudioSource.VOICE_CALL);來表示要對雙向進行錄音,但是這個功能實際是不可使用的,唯一能直接使用的還是VOICE_MIC。也就是對MIC進行錄音。現在很多的所謂錄音軟體應該都是用的MIC進行錄音的。無論是用MediaRecorder這個類還是用的比較高階寫的AudioRecord這個類。
可以參考下面這個文件對錄音使用MediaRecorder設計的原始碼的分析。貌似按照這裡面所講貌似這幾個引數傳進來直接就不支援了,需要有音訊硬體的支援。
http://wenku.baidu.com/view/71d3e008844769eae009ed00.html
目前看到的比較流行的一個CallRecord軟體的說明,如果要雙向錄音的話,需要有硬體驅動的支援,對於某些型號的手機,這個可以通過打補丁的方式進行支援,對於其他沒法打補丁的機型的話,就只能通過MIC讀來支援了。
http://forum.xda-developers.com/showthread.php?t=1441643
綜合上面來看,目前來講比較通用的方法還是隻能用MIC來進行雙向的錄音了。使用了一個使用AudioRecord進行錄音的軟體,不開擴音的話通話錄音效果還可以,對方聲音還可以忍受。不過這個還是有一些噪聲可以聽出來。目前只能先用這個方法湊活著用了。
可以參考這個,這個程式主要功能還是把錄音轉成MP3,需要用外部庫
http://garage.uraroji.com/2011/03/03/android上でのmp3エンコードのサンプル/
另外關於錄音還有一點需要注意,在註冊了電話錄音狀態的監聽函式以後,不要在這個listen函式裡面直接錄音,這樣的話會導致問題,系統會卡在CALL_STATE_OFFHOOK這個狀態。這中lisen需要儘快的返回,可以在這裡面起一個service,然service實現錄音的功能,然後在idle的時候把這個service停掉,或者裡面對應的錄音停掉。起一個新的thread貌似也是可以的。