2017-12-26 1 views
0

버튼을 다시 클릭 할 때까지 반복적으로 시스템 사운드를 반복 재생 (소리가 겹치지 않음) 할 수 있도록 버튼을 클릭 할 수 있도록 만들고 싶습니다. , 버튼은 오디오 서비스 시스템 사운드의 반복 재생을 켜거나 끕니다.시스템 사운드 토글 -

누구든지이 작업을 수행하는 방법을 알고 있다면 크게 감사하겠습니다.

감사

+0

[XY 문제] (https://meta.stackexchange.com/q/66377/364493)처럼 보입니다. 왜 이걸하고 싶어? – the4kman

+0

질문을 이해하기 쉽도록하기 위해 작업을 단순화했습니다. 긴 이유는 내가 타이머를 만들고 사용자가 장치를 물리적으로 두 드릴 때까지 초가 0에 도달하면 타이머를 실행하려고하기 때문입니다. 버튼 또는 화면에 표시됩니다. –

답변

0

이 사용 무한 반복과 AVAudioplayer 수행 한 후 다음 버튼을 눌렀을 때 그것을 재생/일시 정지합니다.

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)") 
    } 
} 

이 그런 다음 버튼에 연결된 함수 내에서, 내 경우에는 내가 이름 :

var audioPlayer : AVAudioPlayer! 

는 다음의 viewDidLoad의 내부 audioPlayer를 초기화 : 먼저 audioPlayer 변수, 외부 어떤 기능의을 그 함수 buttonPressed :

@IBAction func buttonPress(_ sender:AnyObject){ 
    if audioPlayer.isPlaying { 
     audioPlayer.pause() 
    } 
    else { 
     audioPlayer.play() 
    } 
} 
관련 문제