我正在开发一个用于实时音频处理的应用程序,我使用“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);
});
}
我检查了一般设置,振动模式已打开。我在没有麦克风委托(delegate)的情况下测试了其他应用程序,它们可以按预期振动。我也在viewDidLoad
中调用了震动,也不能震动。所以我猜冲突与使用 GCD 的多线程有关。
有人可以就如何解决这个问题给我一些建议吗?谢谢!
最佳答案
你必须在打电话之前停止麦克风收听
AudioServicesPlaySystemSound
关于ios - 在 iOS 中使用 GCD 发生意外冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23283735/