首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在iphone中将音频从扬声器切换到耳机,反之亦然,但麦克风处于静音状态

在iphone中将音频从扬声器切换到耳机,反之亦然,但麦克风处于静音状态
EN

Stack Overflow用户
提问于 2019-04-16 17:07:41
回答 1查看 127关注 0票数 0

我们在Xamarin.Forms.iOSproject中使用了第三方音视频开发工具包。现在的问题是,默认情况下,音频来自扬声器模式,而不是耳机扬声器。我找到了下面的代码,并使用该音频在耳机和扬声器之间切换。但是当我打开扬声器时,麦克风是静音的,当我打开耳机扬声器时,两个麦克风都在工作。所以我的问题是如何在这两种情况下启用麦克风?

代码语言:javascript
复制
   bool blIsOnEarSpeaker=false;

    public void SetAudioSettingsForIOS()
    {
        var session=AVFoundation.AVAudioSession.SharedInstance();

       AVFoundation.AVAudioSessionCategory objCategory= AVFoundation.AVAudioSessionCategory.Playback;
        Foundation.NSError error = null;

        if (blIsOnEarSpeaker==false)
        {
            objCategory=AVFoundation.AVAudioSessionCategory.PlayAndRecord;
            blIsOnEarSpeaker=true;

            error = session.SetCategory(objCategory);
        }
        else
        {
            objCategory=AVFoundation.AVAudioSessionCategory.Playback;
            blIsOnEarSpeaker=false;

            error = session.SetCategory(
                                        objCategory
                                       ,AVFoundation.AVAudioSessionCategoryOptions.DefaultToSpeaker
                                       );
        }


        error = session.SetActive(true);
    }
EN

回答 1

Stack Overflow用户

发布于 2020-10-21 03:26:03

在else条件中:

变化

代码语言:javascript
复制
**objCategory=AVFoundation.AVAudioSessionCategory.Playback;**

代码语言:javascript
复制
**objCategory=AVFoundation.AVAudioSessionCategory.PlayAndRecord;**

或者更好的方法是,在if/else条件之前使用下面这一行:

代码语言:javascript
复制
bool blIsOnEarSpeaker=false;

public void SetAudioSettingsForIOS()
{
    var session=AVFoundation.AVAudioSession.SharedInstance();

   AVFoundation.AVAudioSessionCategory objCategory= AVFoundation.AVAudioSessionCategory.Playback;
    Foundation.NSError error = null;

    objCategory=AVFoundation.AVAudioSessionCategory.PlayAndRecord;

    if (blIsOnEarSpeaker==false)
    {
        blIsOnEarSpeaker=true;

        error = session.SetCategory(objCategory);
    }
    else
    {
        blIsOnEarSpeaker=false;

        error = session.SetCategory(
                                    objCategory
                                   ,AVFoundation.AVAudioSessionCategoryOptions.DefaultToSpeaker
                                   );
    }


    error = session.SetActive(true);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55704490

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档