【问题标题】:Background music cancelled when capturing audio in AVCaptureSession在 AVCaptureSession 中捕获音频时取消背景音乐
【发布时间】:2015-12-03 09:58:59
【问题描述】:

我希望在我的 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);

但两者都不起作用。

【问题讨论】:

    标签: ios xamarin backgrounding


    【解决方案1】:

    您是否尝试过显式创建会话对象的实例并设置 MixWithOthers,如 here 所述?我认为 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;
    

    【讨论】:

      猜你喜欢
      • 2011-03-30
      • 1970-01-01
      • 1970-01-01
      • 2014-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多