我正在开发一个用于实时音频处理的应用程序,我使用的是EZAudio'从麦克风(使用GCD)获取实时样本并使用过滤器处理它们以提取特定带宽的信息。当信息提取成功时,我让iPhone振动。但iPhone不会振动。
以下是使用EZMicrophoneDelegate
中的GCD从麦克风获取的样本,填充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的多线程有关。
有人可以就如何解决这个问题给我一些建议吗?谢谢!
答案 0 :(得分:1)
在调用
之前,你必须停止麦克风收听AudioServicesPlaySystemSound