AudioKit:我可以在不调用AudioKit.stop()的情况下禁用AKMicrophone吗?
我有一个有两个function的应用程序。 一个人播放AKMetronome
并在应用程序不在前台时允许后台播放。 另一种是使用AKMicrophone
的调谐器function,只有在应用程序位于前台时才需要激活。 这些function可以同时使用(调谐器处于活动状态时闪烁的节拍器灯)。
当我按下主页按钮时,节拍器继续播放(如预期的那样)。 但是调谐器的有源麦克风还会在所有其他应用中在设备顶部产生亮红色“录音”式条形 。 虽然应用程序未打开,但我不需要调谐器。
如何禁用AKMicrophone
节点以使此栏不显示,同时还保持AKMetronome
节点不间断播放?
我尝试过以下方法,但都没有成功:
- 在app委托
applicationWillResignActive()
方法中调用AudioKit.stop()
。 这摆脱了录音条,但停止了节拍器。 - 在
applicationWillResignActive()
期间在AKMicrophone
节点上调用stop()
applicationWillResignActive()
。 这不会删除录制栏。 - 在
applicationWillResignActive()
期间在AKMicrophone
节点上调用stop()
和disconnectOutput()
applicationWillResignActive()
。 这也不会删除记录栏。
我怀疑我可能需要杀死整个引擎(即AudioKit.stop()
),从链中删除麦克风节点,并重建并重新启动引擎,所有这些都在applicationWillResignActive
方法中。 但这会打断AKMetronome
的节奏,所以我希望它不会那样。
我认为您应该将AudioKit用于节拍器,并使用称为AKMicrophoneTracker的AudioKit的一部分作为调谐器。
http://audiokit.io/docs/Classes/AKMicrophoneTracker.html https://github.com/AudioKit/AudioKit/blob/master/AudioKit/Common/Internals/Microphone%20Tracker/AKMicrophoneTracker.swift
AudioKit使用AVAudioEngine作为其信号流,而跟踪器实际上是一个基于EZAudio的完全独立的信号流。 我相信这两个可以独立使用。
您当前跟踪麦克风的方式可能类似于: http : //audiokit.io/playgrounds/Analysis/Tracking%20Microphone%20Input/
你会想要更像这样:
let tracker = AKMicrophoneTracker() tracker.start() //: User Interface import AudioKitUI class LiveView: AKLiveViewController { var trackedAmplitudeSlider: AKSlider? var trackedFrequencySlider: AKSlider? override func viewDidLoad() { AKPlaygroundLoop(every: 0.1) { self.trackedAmplitudeSlider?.value = tracker.amplitude self.trackedFrequencySlider?.value = tracker.frequency } addTitle("Tracking With Microphone Tracker") trackedAmplitudeSlider = AKSlider(property: "Tracked Amplitude", range: 0 ... 0.8) { _ in // Do nothing, just for display } addView(trackedAmplitudeSlider) trackedFrequencySlider = AKSlider(property: "Tracked Frequency", range: 0 ... 2_400, format: "%0.3f Hz" ) { _ in // Do nothing, just for display } addView(trackedFrequencySlider) } }
HTH。
- 如何通过iOS中的故事板将UISearchBar添加到NavigationBar
- 删除单元格后刷新tableView
- NSMutableAttributedString initWithData:在旋转时导致EXC_BAD_ACCESS
- 如何向UILocalNotification警报添加操作按钮/操作?
- parse.com tableview不加载对象
- 在iOS中将HTMLstring下载到NSString或Swiftstringvariables中
- IOS – 如何在注销时禁用推送通知?
- 当使用ARC的NSNotificationCenter代码块方法时,不会调用视图控制器dealloc
- 试图在UIWebView中加载Facebook-Comments插件