2017-12-26 8 views
0

ボタンをクリックすると、が繰り返し起動され、が繰り返し再生されるまで(サウンドが重複しないで)何度もシステムサウンドを再生します。 、ボタンはオーディオサービスシステムサウンドの繰り返し再生をオン/オフに切り替えます。システムサウンドの切り替え -

誰かがこれを行う方法を知っていれば、私は大いに感謝します。

おかげ

+0

[XY問題](https://meta.stackexchange.com/q/66377/364493)のように見えます。なぜあなたはこれをしたいのですか? – the4kman

+0

質問を分かりやすくするために私がやっている作業を簡略化していました。私がタイマーを作って、ユーザーがデバイスの物理をタップするまで、秒が0に達するとタイマーが動くようにしたいというのが長い理由です。ボタンまたは画面上に表示されます。 –

答えて

0

は、この使用無限の繰り返しでAVAudioplayer行い、その後、ボタンが押されたときにそれを再生/一時停止します。 まず任意の関数の外audioPlayer変数、を行います

var audioPlayer : AVAudioPlayer! 

その後のviewDidLoadの内側audioPlayerを初期化:

override func viewDidLoad() { 
    super.viewDidLoad() 

    guard let url = Bundle.main.path(forResource: "myOwnSound", ofType: "wav") else { //your own file name AND extension type of course 
     print("file not found") 
     return 
    } 
    do { 
     try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback) 
     try AVAudioSession.sharedInstance().setActive(true) 
     try audioPlayer = AVAudioPlayer(contentsOf: URL(string: url)!) 
     audioPlayer!.prepareToPlay() 
     audioPlayer.numberOfLoops = -1 
    } catch let error as NSError { 
     print("error while initialising sound: \(error)") 
    } 
} 

を次に、あなたのボタンにリンクされている関数の内部で、私の場合、私が命名しますその機能のボタンを押した:

@IBAction func buttonPress(_ sender:AnyObject){ 
    if audioPlayer.isPlaying { 
     audioPlayer.pause() 
    } 
    else { 
     audioPlayer.play() 
    } 
}