Фоновая музыка отменяется при захвате аудио в AVCaptureSession

Я хотел бы, чтобы фоновая музыка продолжала играть, когда я нахожусь в моем приложении для iOS. Однако, когда я вхожу в свое приложение, фоновая музыка отменяется. Я изолировал проблему с аудио частью AVCaptureSession:

var audioDevice = AVCaptureDevice.DefaultDeviceWithMediaType(AVMediaType.Audio);
var audioInput = AVCaptureDeviceInput.FromDevice(audioDevice);
captureSession.AddInput(audioInput);

Я попытался установить AudioSession сразу после этого двумя способами:

AudioSession.Initialize();
AudioSession.Category = AudioSessionCategory.AmbientSound;
AudioSession.SetActive(true);

или вот так:

AudioSession.Initialize();
AudioSession.Category = AudioSessionCategory.MediaPlayback;
AudioSession.OverrideCategoryMixWithOthers = true;
AudioSession.SetActive(true);

Но ни один не работал.

1 ответ

Решение

Вы пытались явно создать экземпляр объекта сеанса и установить MixWithOthers, как описано здесь? Я думаю, что эквивалент Xamarin будет что-то вроде

AVAudioSession session = AVAudioSession.SharedInstance();
session.SetCategory(AVAudioSessionCategory.PlayAndRecord, AVAudioSessionCategoryOptions.MixWithOthers | AVAudioSessionCategoryOptions.DefaultToSpeaker);

В качестве альтернативы, как предлагается в приведенной выше ссылке, попробуйте установить следующее в вашем AppDelegate:

AudioSession.Category = AudioSessionCategory.PlayAndRecord;
AudioSession.AudioShouldDuck = true;
AudioSession.OverrideCategoryDefaultToSpeaker = true;

... а затем создайте AVCaptureSession следующим образом:

AVCaptureSession session2 = new AVCaptureSession();
session2.AutomaticallyConfiguresApplicationAudioSession = false;
Другие вопросы по тегам