AudioKit:当应用程序在后台运行时,始终会出现红色麦克风图标

时间:2018-12-11 19:36:13

标签: avaudiosession audiokit avaudioengine

当我的应用程序进入后台(未录制)时,我很难找到一种方法来摆脱iPhone顶部的红色“正在使用麦克风”图标。这样一来,即使在后台,该应用程序仍可以始终在录制。

这是在AudioKitManager类中初始化麦克风的方式:

// FYI: need to set to playAndRecord here otherwise crashes with “required condition is false: IsFormatSampleRateAndChannelCountValid(format)”
    do {
        try AVAudioSession.sharedInstance().setCategory(.playAndRecord, mode: .default, options: .allowBluetoothA2DP)
        try AVAudioSession.sharedInstance().setActive(true)
    } catch {
        print(error)
    }

    mic = AKMicrophone()
    let inputBooster = AKBooster(mic)
    // boost helps with pitch tracking on some iPads
    inputBooster.gain = 5

    tracker = AKFrequencyTracker(inputBooster)
    tracker.stop() // turned off until it's needed - startPitchTracking() called
    micMixer = AKMixer(tracker)

    micBooster = AKBooster(micMixer)
    micBooster.gain = 0.0
    micBooster >>> mixer

    print("Setting AudioKit.output = mixer")
    AudioKit.output = mixer

    AKSettings.playbackWhileMuted = true
    AKSettings.defaultToSpeaker = true
    AKSettings.sampleRate = 44100

    do {
        print("Attempting to start AudioKit")
        try AudioKit.start()
    } catch {
        AKLog("AudioKit did not start!")
    }

我尝试过的事情:

  • 当录制的vc出现/消失时,“停止”和“启动”麦克风。例如mic.stop()-即使麦克风停止,红色图标仍会显示。

  • 在录制vc出现/消失时,将AVAudioSessionCatagory设置为playAndRecord和.play来回设置。真的以为这行得通!!但是恐怖的红色图标仍然凝视着我,进入我的灵魂。

  • 调用:AKSettings.audioInputEnabled = false。 -红色图标仍指示麦克风输入已启用。
  • 仅在需要时初始化麦克风。 (前一阵子尝试过:似乎还记得那完全是不行)
  • 穿着戴维·鲍伊(David Bowie)的衣服,然后在应用程序进入后台之前,向麦克风大声唱歌“ Starman”。可能应该是第一件事,但仍然无济于事。
  • 以上各种组合

任何帮助,不胜感激!谢谢!

对AudioKit表示敬意-这是一个了不起的框架! :^)

AudioKit:4.5.4 iOS:12.1 Xcode:10.1

1 个答案:

答案 0 :(得分:1)

啊哈。解决方案是在应用程序进入后台时调用audioKit.stop()。然后在再次使用audioKit.start()之前!再见红色麦克风图标。再见。

我以前忽略了这一点,因为无论何时停止和启动音频工具包,我都会遇到很多问题。但是(如我在这篇文章Continuous Sine Wave From AKMIDISampler when AKMicrophone is Present中提到的),主要问题是通过在重新启动音频工具包之后将样本重新加载到所有采样器中而解决的。

W。