我们在Xamarin.Forms.iOSproject中使用了第三方音视频开发工具包。现在的问题是,默认情况下,音频来自扬声器模式,而不是耳机扬声器。我找到了下面的代码,并使用该音频在耳机和扬声器之间切换。但是当我打开扬声器时,麦克风是静音的,当我打开耳机扬声器时,两个麦克风都在工作。所以我的问题是如何在这两种情况下启用麦克风?
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);
}发布于 2020-10-21 03:26:03
在else条件中:
变化
**objCategory=AVFoundation.AVAudioSessionCategory.Playback;**至
**objCategory=AVFoundation.AVAudioSessionCategory.PlayAndRecord;**或者更好的方法是,在if/else条件之前使用下面这一行:
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);
}https://stackoverflow.com/questions/55704490
复制相似问题