我正在開發用於實時音頻處理的應用程序,我使用'EZAudio'從麥克風(使用GCD)獲取實時樣本,並使用過濾器處理它們以提取信息一定的帶寬。當信息提取成功時,我會讓iPhone振動。但iPhone不振動。在iOS中使用GCD意外衝突
以下是使用GCD在EZMicrophoneDelegate
中從麥克風獲取的示例,緩衝區在填充bufferSize後重新加載。
// EZMicrophoneDelegate
-(void) microphone:(EZMicrophone *)microphone
hasAudioReceived:(float **)buffer
withBufferSize:(UInt32)bufferSize
withNumberOfChannels:(UInt32)numberOfChannels {
dispatch_async(dispatch_get_main_queue(), ^{
// filtering
.
.
.
// information extracting
.
.
.
// if extracting succeeded, iPhone vibrate
AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);
});
}
我檢查一般設置,振動模式打開。我測試其他沒有麥克風代表的應用程序,他們可以按預期振動。我也叫viewDidLoad
振動,也不能振動。所以我猜這場衝突與使用GCD的多線程相關。
有人可以給我一些關於如何解決這個問題的建議嗎?謝謝!
之前'這裏,deleage方法在主隊列中運行,無論如何。 – sleepwalkerfx