[Ios] Einen Sound in swift erstellen und abspielen



Answers

Das ist ähnlich wie bei einigen anderen Antworten, aber vielleicht ein wenig mehr "Swifty":

// Load "mysoundname.wav"
if let soundURL = NSBundle.mainBundle().URLForResource("mysoundname", withExtension: "wav") {
    var mySound: SystemSoundID = 0
    AudioServicesCreateSystemSoundID(soundURL, &mySound)
    // Play
    AudioServicesPlaySystemSound(mySound);
}

Beachten Sie, dass dies ein triviales Beispiel ist, das den Effekt des Codes in der Frage reproduziert. Sie müssen sicherstellen, import AudioToolbox zu import AudioToolbox , und das allgemeine Muster für diese Art von Code wäre, Ihre Sounds beim import AudioToolbox der App zu laden, sie in SystemSoundID Instanzvariablen zu speichern, sie in Ihrer gesamten App zu verwenden und anschließend AudioServicesDisposeSystemSoundID aufzurufen Du bist fertig mit ihnen.

Question

Also möchte ich einen Sound in swift erstellen und spielen, der auf Knopfdruck gespielt wird, ich weiß, wie man es in Objective-C macht, aber weiß jemand in Swift?

Für Objective-C wäre das so:

NSURL *soundURL = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"mysoundname" ofType:@"wav"]];
AudioServicesCreateSystemSoundID((__bridge CFURLRef)soundURL, &mySound);

Und dann, um es zu spielen, würde ich tun:

AudioServicesPlaySystemSound(Explosion);

Weiß jemand wie ich das machen könnte?




Dieser Code funktioniert für mich:

class ViewController: UIViewController {

    var audioFilePathURL : NSURL!
    var soundSystemServicesId : SystemSoundID = 0

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        audioFilePathURL = NSBundle.mainBundle().URLForResource("MetalBell", withExtension: "wav")

        AudioServicesCreateSystemSoundID( audioFilePathURL, &soundSystemServicesId)


    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.


    }


    @IBAction func PlayAlertSound(sender: UIButton) {

         AudioServicesPlayAlertSound(soundSystemServicesId)
    }
}



Matt Gibsons Lösung funktionierte für mich, hier ist die schnelle 3-Version.

if let soundURL = Bundle.main.url(forResource: "ringSound", withExtension: "aiff") {
  var mySound: SystemSoundID = 0
  AudioServicesCreateSystemSoundID(soundURL as CFURL, &mySound)
  AudioServicesPlaySystemSound(mySound);
}



Swift-Codebeispiel :

import UIKit
import AudioToolbox

class ViewController: UIViewController {  

override func viewDidLoad() {
    super.viewDidLoad()
}

@IBAction func notePressed(_ sender: UIButton) {

    // Load "mysoundname.wav"

    if let soundURL = Bundle.main.url(forResource: "note1", withExtension: "wav") {
        var mySound: SystemSoundID = 0
        AudioServicesCreateSystemSoundID(soundURL as CFURL, &mySound)
    // Play

        AudioServicesPlaySystemSound(mySound);
    }
}



funktioniert in Xcode 9.2

if let soundURL = Bundle.main.url(forResource: "note1", withExtension: "wav") {
   var mySound: SystemSoundID = 0
   AudioServicesCreateSystemSoundID(soundURL as CFURL, &mySound)
   // Play
    AudioServicesPlaySystemSound(mySound);
 }



Dies erstellt eine SystemSoundID aus einer Datei namens Cha-Ching.aiff .

import AudioToolbox

let chaChingSound: SystemSoundID = createChaChingSound()

class CashRegisterViewController: UIViewController {
    override func viewWillAppear(animated: Bool) {
        super.viewWillAppear(animated)
        AudioServicesPlaySystemSound(chaChingSound)
    }
}

func createChaChingSound() -> SystemSoundID {
    var soundID: SystemSoundID = 0
    let soundURL = CFBundleCopyResourceURL(CFBundleGetMainBundle(), "Cha-Ching", "aiff", nil)
    AudioServicesCreateSystemSoundID(soundURL, &soundID)
    CFRelease(soundURL)
    return soundID
}



Dies funktioniert mit Swift 4:

if let soundURL = Bundle.main.url(forResource: "note3", withExtension: "wav") {
                var mySound: SystemSoundID = 0
                AudioServicesCreateSystemSoundID(soundURL as CFURL, &mySound)
                // Play
                AudioServicesPlaySystemSound(mySound);
            }



import AVFoundation

var audioPlayer = AVAudioPlayer()

class GameScene: SKScene {

    override func didMoveToView(view: SKView) {

        let soundURL = NSBundle.mainBundle().URLForResource("04", withExtension: "mp3")
        audioPlayer = AVAudioPlayer(contentsOfURL: soundURL, error: nil)
        audioPlayer.play()
    }
}



var mySound = NSSound(named:"Morse.aiff")
mySound.play()

"Morse.aiff" ist ein Systemsound von OSX, aber wenn Sie in XCode einfach auf "named" klicken, können Sie (im QuickHelp-Bereich) anzeigen, wo diese Funktion die Sounds sucht. Es kann in Ihrem Ordner "Unterstützende Dateien" sein






Links