Android之关于电话录音原理,目前的方法还是只能录MIC

对于android来讲,没有API直接支持对电话进行双向录音。
虽然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貌似也是可以的。

你可能感兴趣的:(Andriod,积累)