我们在Xamarin.Forms.iOS项目中使用了第三方音频/视频SDK。现在的问题是,默认情况下,音频进入扬声器模式,而不是入耳式。我发现下面的代码,并使用该音频在扬声器和扬声器中切换。但是当我在扬声器上时,麦克风会静音,而当我在耳麦中时,两者都可以工作。所以我的问题是如何在两种情况下都启用麦克风?
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);
}
答案 0 :(得分:0)
在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);
}