我正在开发用于实时音频处理的应用程序,我使用'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