重新编辑:音频不在真正的 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 音频?