android打普通电话时的音频数据是否流经软件层?是否可以被修改?解决方案

android打普通电话时的音频数据是否流经软件层?是否可以被修改?
android打voip电话时,语音数据流肯定是流经软件层的。但是,打普通电话时,RIL却只向GSM模块发了AT指令。至于通话语音数据,好像没有经过RIL吧。我现在想对android打普通电话时的语音数据进行加密,因此必须要截获语音数据,加密之后再放回去。

希望有高手能解答以下几个问题,非常感谢:

1、android打普通电话时,音频数据不流经android软件层的任何一部分吗?也就是说,通话过程中的声音从MIC,到GSM模块,空中传输,再到对方的GSM模块,再到对方的话筒。整个过程中,通话中产生的声音流完全不接触android的软件层?而是从硬件直接到硬件?

2、android不是有一个audio部分吗?按理说任何声音的输入、输出,不是都要流经audio才对吗?难道打电话的时候例外?

3、android系统中也有电话录音软件,如果电话通话中的声音不流经软件层,那么怎么可能使用软件来录音?

4、android上还有一些通话背景设置软件,接听电话时,自动播放预定的噪音。模拟通话的噪音场景,例如:会议、晚餐、在路上、在雨中、机场、看比赛、音乐会等等。那么,这是不是意味着,通话时的声音数据不仅流经了android软件层,并且还可以在程序中被修改?

------解决方案--------------------
暂时不可行的
------解决方案--------------------
我的理解如下,未必正确,仅供参考。
声音在编码之前应该是可以获取的,编码是通过硬件来做的,编码以后才到RIL。
------------
通话过程中的声音从MIC,到GSM模块,空中传输,再到对方的GSM模块,再到对方的话筒。
------------
这中间应该还有一个部分,是MIC/话筒和GSM之间,应该是还有一个编解码的过程。如果需要截获语音数据,那应该是在MIC接收到声音这个部分来做的吧。
------解决方案--------------------
MIC硬件之后是要过软件的。至少要通过驱动吧。
可能还会经过更上层的管理软件。不过我不清楚在Android对应的是哪个模块。
然后由软件处理,应该走到哪个应用程序去。我想你应该在这里就截获数据。

如果当前是语音通话,才会走接下来的编码。
编码不一定是硬件,也可能是软件。
从编码开始的流程估计就不好插入你自己的代码了。

你画的流程里都是硬件,但是这些硬件也是通过软件来控制的,可以查一下android跟这些硬件相关的API看看。
------解决方案--------------------
MediaRecorder recorder = new MediaRecorder();
recorder.setAudioSource(MediaRecorder.AudioSource.VOICE_CALL);
可以录制上下行端口的通话语音