2014-07-25 7 views
7

Ich versuche einen Systemsound zu spielen. Xcode 6 Beta unter Verwendung 4. Hier ist der Code:Warum spielt der ios System Sound nicht im Simulator?

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) 
} 

Es funktioniert auf Geräte aber nicht im Simulator spielen. Ich habe eine Test-App erstellt, die nichts anderes tut, als diesen Sound zu spielen, also glaube ich nicht, dass ich etwas unternehme, um das zu stoppen.

Der Simulator spielt Sound aus der Safari-App ok, also nehme ich an, dass er in der Lage ist, Ton von meiner App abzuspielen.

Beachten Sie, dass ich auch anderen Code zum Abspielen von Sound auf zwei andere Arten, die auch auf Geräten, aber nicht Simulator funktionieren. Ich habe dieses Beispiel der Einfachheit halber gewählt.

Bearbeiten - geänderte Datei zu Ressourcenbündel Verwirrung

+1

möglich Duplikat von [Sound funktioniert nicht im iPhone Simulator?] (http://stackoverflow.com/questions/302399/sound-not-working-in-iphone-simulator) –

+0

Sie sollten behaupten (dh assert (soundID! = 0)) nachdem Sie diesen Ton eingestellt haben, um sicherzustellen, dass er eingestellt wurde. Auch AudioServicesCreateSystemSoundID gibt einen OSStatus zurück, den es druckt. –

+0

Ich habe meine System-Sound-Einstellungen und MIDI-Einstellungen nach Vorschlägen Sound-nicht-arbeiten-in-iphone-Simulator-Antwort optimiert. Einzige Sache, die ich nicht versuchen konnte, war Line-In für die Eingabe zu setzen, Option existiert nicht (verwendetes Mikrofon stattdessen). –

Antwort

0

zu vermeiden, da Datei auf dem Pfad nicht vorhanden Sie angegeben haben. Um dies zu testen, eine Audio-Datei auf Ihrem lokalen speichern und dem Pfad des Code angeben (siehe zum Beispiel unten) -

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

Ich habe meine Frage bearbeitet, um die Datei lokal zur App zu machen und die Verifizierung zu überprüfen, dass sie die Datei gefunden hat. Das Problem besteht immer noch –

7

Ich antworte meine eigene Frage zu klären, was ich gelernt habe. Es gab drei Probleme, die verhinderten, dass mein ursprünglicher Code funktionierte. Hinweis: Ich verwende Xcode6 Beta4 und iPhone 5s auf dem Simulator.

1- Der ursprüngliche Dateipfad, den ich von "/System/Library/Audio/UISounds/Tone.caf" verwendet habe, funktioniert nicht im Simulator, er ist nur auf dem Gerät gültig. Korrigiert, dass durch Hinzufügen der Audiodatei zur App.

2- Sound not working in iPhone Simulator? zur Verfügung gestellt Informationen, die Sound funktioniert für iOS 7.1 und früher. Ich bin mir nicht sicher, welcher der verschiedenen Vorschläge funktioniert hat, seit ich mit ios8 getestet habe, als ich sie durchlief.

3- Da der gleiche Code, der auf ios7 funktioniert, nicht auf ios8 funktioniert, gehe ich davon aus, dass ein Fehler im io8-Simulatorcode vorliegt (ios8-Gerät funktioniert OK). Aus drei Möglichkeiten habe ich versucht, Sound zu produzieren, nur funktioniert ein nicht:

AudioServicesPlaySystemSound() - nicht

AudioUnit- Ausgang funktioniert - funktioniert

AVAudioPlayer - arbeitet

+3

Ich bestätige, dass AudioServicesPlaySystemSound() nicht wie in iOS 7.1 funktioniert. Im Simulator wird kein Ton abgespielt, es funktioniert jedoch im eigentlichen Gerät.(Getestet auf Xcode 6 GM) – John

+2

AudioServicesPlaySystemSound() funktioniert nicht für mich im Simulator. Es funktioniert auf dem Gerät. Getestet mit Xcode 6.0.1 und iOS 8.0. –

+0

Es funktioniert immer noch nicht ab Jan '15 (XCode 6.1). –

Verwandte Themen