是否可以在Android中录制声音时静音

时间:2015-04-05 05:45:21

标签: java android audio call voice-recording

我想构建一个应用程序,我想在调用中调制声音。我已经编写了一个代码,用于记录声音并以不同的音高播放它。现在我想要这个功能在呼叫时。我想要静音通话录制声音,然后播放差异音高。如何静音,但仍然录制音频。

3 个答案:

答案 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)