#xamarin.forms #xamarin.ios
#xamarin.forms #xamarin.ios
Вопрос:
Мы используем сторонний аудио / видео SDK в нашем Xamarin.Формы.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);
}
Комментарии:
1. пожалуйста, не публикуйте повторяющиеся вопросы
2. он не дублируется, указанный для Android, а этот для платформы iOS. Если вы считаете, что это дубликат, дайте мне знать, я объединю это с другим.
3. @JohnSmith Привет, вы решили эту проблему?
4. Да, я это исправил.
5. @JohnSmith Вы можете поделиться своим ответом здесь, это будет полезно для других 🙂
Ответ №1:
В состоянии 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);
}