Переключение звука системы - быстро
Я хочу сделать так, чтобы можно было нажимать кнопку, которая будет многократно воспроизводить системный звук снова и снова (без наложения звуков) до тех пор, пока кнопка не будет нажата снова - по сути, кнопка будет переключать повторное воспроизведение звука система сервисов звука вкл / выкл.
Если кто-нибудь знает, как это сделать, я буду очень признателен.
Спасибо
1 ответ
Для этого используйте AVAudioplayer
с бесконечным повторением, а затем приостановить / воспроизвести его при нажатии кнопки. Сначала создайте переменную audioPlayer вне любой функции:
var audioPlayer : AVAudioPlayer!
Затем инициализируйте audioPlayer внутри viewDidLoad:
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()
}
}
Ты можешь использовать
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")
}
}
}