開発中のiOSアプリで、Bluetoothから送られてくるデータで異常を検出したとき、「音」と「振動」で知らせる必要に迫られました。
まずはAVFoundationをインポートします。
import AVFoundation
音声ファイルを用意します。今回はシンセサイザーのバーチャルアナログ音源を使って簡単なビープ音を作り、それをWAVファイルにエクスポートしました。
そのファイルAssetsへ入れます。
Assetsに音声ファイルをドラッグ&ドロップします。
ソースコード内で参照する名前をつけます。今回は「Sending Sound」という名前にしました。
AVAudioPlayerのプロパティを宣言します。
private var sendingSound: AVAudioPlayer!
Assetsからオーディオファイルのオブジェクトを取得します。
オーディオファイルは確実に存在するので、今回はエラー処理は省略しています。
let soundFile = NSDataAsset(name: "Sending Sound")!
AVAudioPlayerのオブジェクトを生成します。
sendingSound = try? AVAudioPlayer(data: soundFile.data, fileTypeHint: "wav")
あとは再生、ポーズ、音量変更などのメソッドを呼び出せば簡単に使えます。
sendingSound.play() //再生
sendingSound.play() //停止
sendingSound.pause() //ポーズ(綺麗に再生解除ができる)
sendingSound.setVolume(volume: Float, fadeDuration: TimeInterval)
sendingSound.currentTime = 0 //再生位置を先頭に戻す
sendingSound.numberOfLoops = -1 //ループ回数して、-1で無限ループ
このほかにもいろんなメソッド、プロパティが用意されています。
ひとまず、これらを利用すれば簡単に音声ファイルの再生をできることがわかりました。
iOS、macOSどちらも同じソースコードで動作します。