我正在構建一個必須跟蹤用戶麥克風輸入幅度的應用程序。 AudioKit爲我的需求提供了一堆方便的對象:AKAmplitudeTracker等等。我還沒有找到任何可行的信息,如何啓動AudioKit,開始跟蹤等。什麼是管理AudioKit生命週期的正確方法?
現在所有與AudioKit初始化相關的代碼都在我的根音頻錄音模塊VC的viewDidLoad方法中。這是不正確的,因爲隨機錯誤發生,我不能跟蹤什麼是錯的。下面的代碼顯示了我現在如何使用AudioKit。
var silence: AKBooster!
var tracker: AKAmplitudeTracker!
var mic: AKMicrophone!
...
override func viewDidLoad() {
super.viewDidLoad()
switch AVAudioSession.sharedInstance().recordPermission() {
case AVAudioSessionRecordPermission.granted:
self.mic = AKMicrophone()
self.tracker = AKAmplitudeTracker(self.mic)
AKSettings.audioInputEnabled = true
AudioKit.output = self.tracker
AudioKit.start()
self.mic.start()
self.tracker.start()
break
case AVAudioSessionRecordPermission.undetermined:
AVAudioSession.sharedInstance().requestRecordPermission {
(granted) in
if granted {
self.mic = AKMicrophone()
self.tracker = AKAmplitudeTracker(self.mic)
AKSettings.audioInputEnabled = true
AudioKit.output = self.tracker
AudioKit.start()
self.mic.start()
self.tracker.start()
}
}
case AVAudioSessionRecordPermission.denied:
AVAudioSession.sharedInstance().requestRecordPermission {
(granted) in
if granted {
self.mic = AKMicrophone()
self.tracker = AKAmplitudeTracker(self.mic)
AKSettings.audioInputEnabled = true
AudioKit.output = self.tracker
AudioKit.start()
self.mic.start()
self.tracker.start()
}
}
default:
print("")
}
...
}
請幫我弄清楚如何正確管理AudioKit。
是啊,我的代碼工作。但有時跟蹤器不能啓動,它會輸出恆定值,如0.0066 ..等,而不是各種值。或者我在AudioKit.start()控制檯上發現致命錯誤,說'hwFormat'和其他CoreAudio部件有問題。所以我認爲我以錯誤的方式處理AudioKit。 –
隨着奇怪的音頻錯誤,它很可能是一個操作系統錯誤。嘗試重新啓動設備。 – dave234
如果我需要間隔小於0.1秒的計時器,該怎麼辦?我正在考慮像addPeriodicTimeObserver類似的東西...類似的AudioKit? – Ibdakine