我想这样做,以便可以单击一个按钮,它将开始反复播放系统声音(不重叠声音),直到再次单击该按钮 - 所以本质上,该按钮将切换重复播放音频服务系统声音开/关。
如果有人知道如何做到这一点,我将不胜感激。
谢谢
我想这样做,以便可以单击一个按钮,它将开始反复播放系统声音(不重叠声音),直到再次单击该按钮 - 所以本质上,该按钮将切换重复播放音频服务系统声音开/关。
如果有人知道如何做到这一点,我将不胜感激。
谢谢
您可以在应用程序中使用
AVFoundation
和AVAudioPlayer
管理音乐和声音
导入以下
import AVFoundation
创建 AVAudioPlayer 的属性来管理播放/停止,并在音乐按钮的范围内添加以下代码
var player : AVAudioPlayer?
@IBAction func openListAction(_ sender: UIButton) {
// moveToGame()
if sender.isSelected {
sender.isSelected = false
player?.stop()
}
else {
sender.isSelected = true
let bundle = Bundle.init(for: self.classForCoder)
let path = bundle.path(forResource: "soundFileName", ofType : "soundFileExtension")! //.mp3, .caf etc
let url = URL(fileURLWithPath : path)
do {
player = try AVAudioPlayer(contentsOf: url)
player?.play()
} catch {
print ("Error to load music")
}
}
}
为此,请使用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)")
}
}
然后在链接到您的按钮的函数中,在我的例子中,我将该函数命名为 buttonPressed:
@IBAction func buttonPress(_ sender:AnyObject){
if audioPlayer.isPlaying {
audioPlayer.pause()
}
else {
audioPlayer.play()
}
}