1、在实际开发中,有时需要禁用录音功能的,从系统侧修改也有多种方法,我将给出最简单的实现方法,如果是设备管理者,按道理来说是可以直接调用禁用录音的方法实现,但是经使用测试,实际上不生效。那么直接修改系统源码说是一个更好的选择。
2、修改文件frameworks/av/services/audiopolicy/service/AudioPolicyService.cpp
此处silenceAllRecordings_l函数可实现静音功能,那么我们只需在调用silenceAllRecordings_l函数的地方加上判断即可。即通过一个系统属性值去判读是否静音。
...省略代码...
nsecs_t topStartNs = 0;
nsecs_t latestStartNs = 0;
nsecs_t topSensitiveStartNs = 0;
nsecs_t latestSensitiveStartNs = 0;
bool isA11yOnTop = mUidPolicy->isA11yOnTop();
bool isAssistantOnTop = false;
bool isSensitiveActive = false;
bool isInCall = mPhoneState == AUDIO_MODE_IN_CALL;
bool isInCommunication = mPhoneState == AUDIO_MODE_IN_COMMUNICATION;
bool rttCallActive = (isInCall || isInCommunication)
&& mUidPolicy->isRttEnabled();
bool onlyHotwordActive