2014-07-25 105 views
7

我正在嘗試播放系統聲音。使用Xcode 6 Beta 4.這裏是代碼:爲什麼ios系統不能在模擬器中播放?

func playKeyClick() 
{ 
    let filePath = NSBundle.mainBundle().pathForResource("Tock", ofType: "aiff") 
    if NSFileManager.defaultManager().fileExistsAtPath(filePath) { 
     println("file exists") 
    } 
    let fileURL = NSURL(fileURLWithPath: filePath) 
    var soundID:SystemSoundID = 0 
    AudioServicesCreateSystemSoundID(fileURL, &soundID) 
    AudioServicesPlaySystemSound(soundID) 
} 

它在設備上工作正常,但不在模擬器中播放。我創建了一個測試應用程序,除了播放這個聲音外什麼都不做,所以我不認爲我正在做任何事情來阻止它。

模擬器從Safari應用程序播放聲音好,所以我假設顯示它能夠從我的應用程序播放聲音。

請注意,我還有其他兩種播放聲音的代碼,這兩種方式也適用於設備,但不適用於模擬器。爲了簡單,我選擇了這個例子。

編輯 - 更改的文件到資源包,以避免混淆

+1

可能重複[聲音不工作在iPhone模擬器?](http://stackoverflow.com/questions/302399/sound-not-working-in-iphone-simulator) –

+0

你應該斷言(即斷言(soundID!= 0))在設置了這個聲音之後,確保它已經被設置。另外AudioServicesCreateSystemSoundID返回一個OSStatus,println它。 –

+0

我調整了我的系統聲音設置和MIDI設置,根據建議聲音不工作在iPhone模擬器的答案。只有我無法嘗試的是設置輸入,選項不存在(用麥克風代替)。 –

回答

0

由於文件未在指定的路徑中。爲了測試這個,節省您的本地的聲音文件,並指定其路徑的代碼(見例如,低於) -

let fileURL = NSURL(fileURLWithPath: "/Users/<Home dir>/Desktop/yoursund.mp3") 
+0

我編輯我的問題,使文件本地的應用程序,並打印驗證,它發現該文件。問題仍然存在 –

7

我回答我的問題,以澄清什麼,我已經明白了。有三個問題阻止了我的原始代碼的工作。注意我在模擬器上使用Xcode6 Beta4和iphone 5s。

1-我使用的「/System/Library/Audio/UISounds/Tone.caf」的原始文件路徑在模擬器中不起作用,它只在設備上有效。通過將音頻文件添加到應用程序中進行了更正。

2- Sound not working in iPhone Simulator?提供的信息在ios 7.1及更早版本中運行良好。不知道這幾個建議中的哪一個在我用ios8進行測試時起作用,因爲我通過它們進行了測試。

3-因爲ios7上的相同代碼在ios8上不起作用,所以我假設在io8模擬器代碼中有一個錯誤(ios8設備工作正常)。出於三種方式我試圖發出聲音,只有一個不工作:

AudioServicesPlaySystemSound() - 不工作

AudioUnit輸出 - 工程

AVAudioPlayer - 工程

+3

我確認AudioServicesPlaySystemSound()在iOS 7.1中不起作用。模擬器中沒有聲音播放,但它在實際設備中工作。(在Xcode 6 GM上測試) – John

+2

AudioServicesPlaySystemSound()在模擬器中不適用於我。它在設備上工作。使用Xcode 6.0.1和iOS 8.0進行測試。 –

+0

截至2015年1月(XCode 6.1),它仍然不工作。 –

相關問題