我想构建一个应用程序,我想在调用中调制声音。我已经编写了一个代码,用于记录声音并以不同的音高播放它。现在我想要这个功能在呼叫时。我想要静音通话录制声音,然后播放差异音高。如何静音,但仍然录制音频。
答案 0 :(得分:1)
此答案可在通话期间使您的麦克风静音:
Boolean isMuted = false;
然后在您的活动中,说一个onClick
AudioManager audioManager = (AudioManager) getContext().getSystemService(Context.AUDIO_SERVICE);
if(!isMuted){
if((audioManager.getMode()== AudioManager.MODE_IN_CALL)||(audioManager.getMode()== AudioManager.MODE_IN_COMMUNICATION)){
audioManager.setMicrophoneMute(true);
}
isMuted = true;
}else{
if((audioManager.getMode()== AudioManager.MODE_IN_CALL)||(audioManager.getMode()== AudioManager.MODE_IN_COMMUNICATION)){
audioManager.setMicrophoneMute(false);
}
isMuted = false;
}
记住要在清单中启用权限
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
答案 1 :(得分:0)
步骤1。 在清单中设置权限
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
第2步。 麦克风状态反转
AudioManager audioManager =
(AudioManager) getBaseContext().getSystemService(Context.AUDIO_SERVICE);
if (audioManager!=null) {
audioManager.setMicrophoneMute(!audioManager.isMicrophoneMute());
}
答案 2 :(得分:0)
我无法在我的Honor设备上使用AudioManager.setMicrophoneMute(boolean)
,但是找到了另一种方法。我在自定义拨号应用程序中需要这种功能,因此我已经有了自定义InCallService,可以拦截所有呼叫。此类具有完美运行的方法setMuted(boolean state)
。