2015-06-25 2 views
0

Я запустил это приложение на своем симуляторе, а также на свой телефон и несколько файлов mp3, однако я не могу получить звук для вывода из приложения. Я включил mp3-файл в поддерживаемые файлы. Я честно потерял, что делать дальше. Я не получаю ошибок, но нет звука.AVAudioPlayer не играет mp3-файл

@IBAction func play (sender: AnyObject){ 

func sharedInstance() { 
     AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback, error: nil) 
     AVAudioSession.sharedInstance().setActive(true, error: nil) 

     var audioPlayer = AVAudioPlayer() 
     var song = NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("pingpong", ofType: "mp3")!) 
     println(song) 



     var error:NSError? 
     audioPlayer = AVAudioPlayer(contentsOfURL: song, error: &error) 
     audioPlayer.prepareToPlay() 
     audioPlayer.play() 
} 
sharedInstance() 

} 
+0

проверьте, находится ли ваш телефон в бесшумном режиме. – DHEERAJ

+0

Телефон не в бесшумном режиме. – Matt

ответ

1

Просто сделайте var audioPlayer = AVAudioPlayer() глобальный для вашего класса, как показано ниже код:

И я изменил свой код, чтобы сделать его безопасным:

import UIKit 
import AVFoundation 

class ViewController: UIViewController { 

    var audioPlayer = AVAudioPlayer() 

    @IBAction func play (sender: AnyObject){ 

     var categoryError: NSError? 
     if AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback, error: &categoryError) { 
      println("AVAudioSession Category Playback OK") 
      var activateError: NSError? 
      if AVAudioSession.sharedInstance().setActive(true, error: &activateError) { 
       println("AVAudioSession is Active") 
       var song = NSBundle.mainBundle().URLForResource("we_cant_Stop", withExtension: "mp3")! 
       var error:NSError? 
       audioPlayer = AVAudioPlayer(contentsOfURL: song, error: &error) 
       audioPlayer.play() 

      } else if let activateError = activateError { 
       println(activateError.description) 
      } 
     } else if let categoryError = categoryError { 
      println(categoryError.description) 
     } 
    } 
} 

Это работает отлично.

Смежные вопросы