MP3などのミュージック・ファイルを再生させるにはどうするのか? AVAudioplayer は色々と設定ができますが、まず簡単な音楽再生アプリをSwiftで作ってみます。
Swift 5.1
Xcode 11.3.1
Xcode 11.3.1
AVAudioplayer
ミュージック・ファイルをプロジェクトに追加
Xcodeで簡単な Single View のプロジェクトを作成します。
右クリックでメニューの[Add Files to “xxx”…]を選択 ファイルを選んでAdd
ミュージック・ファイル sample.mp3 をプロジェクトに追加
オーディオ再生させる処理を記述
- ViewController.swift に AVFoundation をインポート
- ViewController に AVAudioPlayerDelegate を追加
- 再生する audio ファイルのパスから、再生するURLを作成する
-
auido を再生するプレイヤーを作成する
- 自分自身をデリゲートに設定
- ボタンが押されると再生・停止の記述を追加
ViewController.swift
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
import UIKit import AVFoundation class ViewController: UIViewController, AVAudioPlayerDelegate { var audioPlayer:AVAudioPlayer! @IBOutlet var button:UIButton! override func viewDidLoad() { super.viewDidLoad() // 再生する audio ファイルのパスを取得 let audioPath = Bundle.main.path(forResource: "sample", ofType:"mp3")! let audioUrl = URL(fileURLWithPath: audioPath) // auido を再生するプレイヤーを作成する var audioError:NSError? do { audioPlayer = try AVAudioPlayer(contentsOf: audioUrl) } catch let error as NSError { audioError = error audioPlayer = nil } // エラーが起きたとき if let error = audioError { print("Error \(error.localizedDescription)") } audioPlayer.delegate = self audioPlayer.prepareToPlay() } // ボタンがタップされた時の処理 @IBAction func buttonTapped(_ sender : Any) { if ( audioPlayer.isPlaying ){ audioPlayer.stop() button.setTitle("Stop", for: UIControl.State()) } else{ audioPlayer.play() button.setTitle("Play", for: UIControl.State()) } } } |
play stop のボタン
Storyboard を開き、ボタンを置きます
そのボタンを選択して右クリック接続ダイアログの
Touch Up Inside を ViewController の buttonTapped と接続します
New referencing Outlet を ViewController の button と繋ぎます。
ビルド&実行
Xcode を Build して、ボタンを押すとオーディオが再生され、
もう一度押すと停止すれば成功です。
音楽再生にはこの他に
MPMusicPlayerController
AVPlayer
を使う方法があります。
また、バックグラウンドでも音楽の再生は必要ですがその設定は以下でやっています。
バックグラウンドはできるだけ避けるべきというのがAppleのスタンスでしょうか 。ただ、バックグラウンドでもオーディオや位置情報を使うことは...
関連ページ:
System Sound の再生
Ref:
AVAudioPlayer – AVFoundation | Apple Developer Documentation