【问题标题】:is it possible to mute a call while recording the sound in android在android中录制声音时是否可以使通话静音
【发布时间】:2015-06-09 20:40:14
【问题描述】:

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

【问题讨论】:

  • 我认为这是可能的,但你的要求很难。这将需要您进行个人实验。我建议你自己试试。如果它不起作用,请尝试使用免提电话麦克风。如果这仍然不起作用,请在不同的 Android 手机上尝试相同的操作。我发现这样的功能确实因手机而异。
  • 如果你曾经得到这个工作,你能分享答案吗?

标签: java android audio call voice-recording


【解决方案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" />

【讨论】:

    【解决方案2】:

    第 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());
    }
    

    【讨论】:

      【解决方案3】:

      我无法让AudioManager.setMicrophoneMute(boolean) 在我的 Honor 设备上工作,但我找到了另一种方法来做到这一点。我在我的自定义拨号应用程序中需要这个功能,所以我已经有自定义 InCallService,拦截所有呼叫。这个类有方法setMuted(boolean state),它工作得很好。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-03-14
        • 2013-03-24
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多