我对AVFoundation
和AVAudioPlayer
有疑问。
在我的项目中,我有一个视图,您从那里开始,还有一个动作发生在哪里。当我启动该应用程序时,我告诉第一个视图开始播放我的背景音乐,当用户处于第二个视图中时,它必须继续播放。但是,只要您回到第一个视图,即使它已经在播放,它也会再次开始播放歌曲。因此,我最终得到了很多回声。 如何防止这种情况发生?
这是我尚未使用的代码:
import UIKit
import AVFoundation
class StartViewController: UIViewController {
var backgroundPlayer = AVAudioPlayer()
override func viewDidLoad() {
super.viewDidLoad()
//background music file
let sound = Bundle.main.path(forResource: "background_music", ofType: "mp3")
do {
backgroundPlayer = try AVAudioPlayer(contentsOf: URL(fileURLWithPath: sound!))
}
catch {
print(error)
}
playBackgorundMusic()
}
func playBackgorundMusic() {
if backgroundPlayer.isPlaying {
//do nothing
} else {
backgroundPlayer.play()
}
}
}
答案 0 :(得分:0)
您应该为音乐播放器设置单人课程,以保持播放,暂停,停止等状态。
class MusicPlayerManager{
static let shared = MusicPlayerManager()
var backgroundPlayer = AVAudioPlayer()
init(){}
func playMusic(){
if backgroundPlayer.isPlaying {
//do nothing
} else {
backgroundPlayer.play()
}
}
}