ich die neue AVAudioEngine in iOS 8.completionHandler von AVAudioPlayerNode.scheduleFile() zu früh genannt
Es ist wie die completionHandler von player.scheduleFile schaut zu verwenden versuche() aufgerufen wird vor die Tondatei hat fertig spielen.
Ich verwende eine Sounddatei mit einer Länge von 5s - und die println()
-Message erscheint etwa 1 Sekunde vor dem Ende des Sounds.
Mache ich etwas falsch oder missverstehe ich die Idee eines AbschlussesHandler?
Danke! Hier
ist ein Code:
class SoundHandler {
let engine:AVAudioEngine
let player:AVAudioPlayerNode
let mainMixer:AVAudioMixerNode
init() {
engine = AVAudioEngine()
player = AVAudioPlayerNode()
engine.attachNode(player)
mainMixer = engine.mainMixerNode
var error:NSError?
if !engine.startAndReturnError(&error) {
if let e = error {
println("error \(e.localizedDescription)")
}
}
engine.connect(player, to: mainMixer, format: mainMixer.outputFormatForBus(0))
}
func playSound() {
var soundUrl = NSBundle.mainBundle().URLForResource("Test", withExtension: "m4a")
var soundFile = AVAudioFile(forReading: soundUrl, error: nil)
player.scheduleFile(soundFile, atTime: nil, completionHandler: { println("Finished!") })
player.play()
}
}
Works als Behelfslösung. Vielen Dank! – Oliver
Schöne Workaround. –
Liebe es. Klappt wunderbar! –