重新编辑:音频不在真正的 ios 设备中播放,而是在 Swift2 的模拟设备中播放

Posted

技术标签:

【中文标题】重新编辑:音频不在真正的 ios 设备中播放,而是在 Swift2 的模拟设备中播放【英文标题】:ReEdited : Audio not playing in real ios Device but playing in simulated devices in Swift2 【发布时间】:2015-08-02 14:53:54 【问题描述】:

这是我在 swift2 中的代码,绝对没有错误,我在真机上运行但没有声音?没有例外,我有什么遗漏吗?

  import UIKit
    import AVFoundation

class ViewController: UIViewController 


    @IBAction func play() 
        audioPlayer.play()
    

    var audioPlayer : AVAudioPlayer!



    override func viewDidLoad() 
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.


         let alertSound = NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("drum", ofType: "mp3")!)

        do 
            audioPlayer = try AVAudioPlayer(contentsOfURL: alertSound)
            audioPlayer.prepareToPlay()
            audioPlayer.volume = 1.0
            audioPlayer.play()
            print("yes")

        catch _ 
            audioPlayer = nil
        
      

【问题讨论】:

我怀疑是不是因为我的模拟设备是 ios9 而我的真实设备是 ios 8.4 如果您使用 iOS 8.4 模拟器会发生什么? 如何更改模拟器版本? 首选项->下载->组件->iOS 8.4 模拟器 【参考方案1】:

我从 Apple WWDC 大会的一个视频中发现了问题所在

http://adcdownload.apple.com/videos/wwdc_2010__hd/session_412__audio_development_for_iphone_os_part_1.mov(只能在 safari 上查看)

问题是音频路由,当我插入耳机时,我可以听到来自真实设备的声音。 当路由改变时,我们需要使用 AVAudioSession 设置正确的音频路由。上面那个视频中的更多信息。

【讨论】:

【参考方案2】:

导入 AVFoundation 并将其添加到您的 viewDidLoad:

var err = NSErrorPointer() AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback, error: err)

【讨论】:

以上是关于重新编辑:音频不在真正的 ios 设备中播放,而是在 Swift2 的模拟设备中播放的主要内容,如果未能解决你的问题,请参考以下文章

如何从 iOS 设备向多个 AirPlay 设备 AirPlay 音频?

视频不在设备上播放,但在播放 ov 模拟器

音频无法在所有 iOS 设备上播放

将音频流式传输到其他 iOS 设备(使用多点)并通过本地设备播放音频

录制的音频无法在设备上播放,但不能在 iOS 模拟器上播放

从当前在 iOS 设备上播放的音乐中获取音频功率级别