使用AVFoundation播放声音时,模拟器会发出声音,但设备上没有声音

时间:2016-02-04 12:58:26

标签: swift avfoundation avaudioplayer

当我尝试在我的计时器应用中播放声音时,我在代码中使用AVFoundation。虽然我能够在模拟器中听到声音,但不能在设备中听到声音。我想知道我是否需要为应用程序设置一些在设备中播放声音的内容?

请查看以下代码以获取更多信息。

import AVFoundation
class timer {
  var player: AVAudioPlayer = AVAudioPlayer()
     // in viewdidload
    let squishPath = NSBundle.mainBundle().pathForResource("ding", ofType: "wav")
    let squishURL = NSURL(fileURLWithPath: squishPath!)

    do {
        try squishPlayer = AVAudioPlayer(contentsOfURL: squishURL)
        squishPlayer.prepareToPlay()
    } catch let err as NSError {
        print(err.debugDescription)
    }
    squishPlayer.numberOfLoops = 0
}

我检查了文件名的确切位置,并且它位于复制退回资源中。

我发现解决方案是将以下内容添加到app delegate。

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
    let session = AVAudioSession.sharedInstance()

    do {
        try session.setCategory(AVAudioSessionCategoryPlayback)
        try session.setActive(true)
    } catch let error as NSError {
        print("AVAudioSession configuration error: \(error.localizedDescription)")
    }


    return true
}

这解决了设备上没有声音的问题,但奇怪的是即使我没有将这些添加到app delegate,模拟器中仍有声音。

0 个答案:

没有答案