在一个UI线程正在工作时,Swift AudioServicesPlaySystemSound(kSystemSoundID_Vibrate)在后台线程中不工作?

时间:2016-07-26 12:03:51

标签: ios swift xcode multithreading

我是swift的新手,并开始致力于以形式塑造可视化音频 我正在使用EZAudio pod。有一个函数麦克风()被调用来获取输入,一个UI线程用于调用另一个使用麦克风提供的数据更新UI的函数! 我想要做的是当UI更新时,在基于UI更新的特定条件下,我必须调用第一个线程的振动。 所以我创建了一个调用振动的新线程,但AudioServicesPlaySystemSound(kSystemSoundID_Vibrate)在后台线程中不起作用! 我知道代码是愚蠢的,但请看看!

    func microphone(microphone: EZMicrophone!, hasAudioReceived buffer: UnsafeMutablePointer<UnsafeMutablePointer<Float>>, withBufferSize bufferSize: UInt32, withNumberOfChannels numberOfChannels: UInt32) {
//thread to update UI       
 dispatch_async(dispatch_get_main_queue()) {
         self.plot?.updateBuffer(buffer[0], withBufferSize: bufferSize)
                    }

    let maxValue = self.myMax(buffer[0], count: bufferSize)
    if(maxValue>0.2){
            // do something in the background
        let priority = DISPATCH_QUEUE_PRIORITY_DEFAULT
       //thread to invoke Viberation
 dispatch_async(dispatch_get_global_queue(priority, 0)) {
            AudioServicesPlaySystemSound(kSystemSoundID_Vibrate)    
        }

}

请提前帮助并感谢:)

0 个答案:

没有答案