AVAudioPlayer не играет в быстрой. Как это исправить? - PullRequest
0 голосов
/ 30 июня 2018

В моем приложении я хочу интегрировать AVAudioPlayer в мое приложение. Но я не могу здесь ничего. Вот мой код:

import UIKit
import AVFoundation

class NotenAnsicht: UIViewController{


var PlaybackPlayer:AVAudioPlayer = AVAudioPlayer()


override func viewDidLoad() {
    super.viewDidLoad()
    PlaybackAudioAufsetzen()   
}




func PlaybackAudioAufsetzen(){

    do{

        let audioPath = Bundle.main.path(forResource: "song", ofType: "mp3")
        try PlaybackPlayer = AVAudioPlayer(contentsOf: NSURL(fileURLWithPath: audioPath!) as URL)
        print("Song set")
    }
    catch{
        print("there was an Error")

    }

}




override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}



@objc func PlaybayStarten(sender:UIButton){
    PlaybackPlayer.play()
    PlaybackPlayer.volume = 1
     print(PlaybackPlayer.isPlaying)
    print("Song should play")  
}


}

Понятия не имею, в чем проблема. Все функции вызываются правильно. И аудиоплеер не определяется локально. После PlaybackPlayer.play(), PlaybackPlayer.isPlaying возвращает true. Я просто ничего не могу здесь.

У вас есть идеи, где проблема?

1 Ответ

0 голосов
/ 30 июня 2018

установите try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback) и try AVAudioSession.sharedInstance().setActive(true) в блоке do перед настройкой audioPath.

ваш код должен выглядеть следующим образом.

func PlaybackAudioAufsetzen(){

    do{

        let audioPath = Bundle.main.path(forResource: "song", ofType: "mp3")

        /// this code will make this app ready to takeover the device audio
        try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback)
        try AVAudioSession.sharedInstance().setActive(true)

        try PlaybackPlayer = AVAudioPlayer(contentsOf: NSURL(fileURLWithPath: audioPath!) as URL)
        print("Song set")
    }
    catch let error {
        print(error.localizedDescription)
    }

}
...