Ios 如何播放我保存到用户手机上的音频文件
当我单击“保存”按钮时,会弹出一个警报,获取用户输入的文件保存名称。然后,当我点击播放按钮播放保存的文件时,它不会播放,我得到的是“没有文件”,所以我的问题是如何让它播放保存的文件 代码:Ios 如何播放我保存到用户手机上的音频文件,ios,swift,avaudioplayer,Ios,Swift,Avaudioplayer,当我单击“保存”按钮时,会弹出一个警报,获取用户输入的文件保存名称。然后,当我点击播放按钮播放保存的文件时,它不会播放,我得到的是“没有文件”,所以我的问题是如何让它播放保存的文件 代码: 形成文件名的方式存在阻抗不匹配。在一个函数中,您使用的是URL。在另一个函数中,您使用的是路径字符串。他们没有得到同样的结果 如果您有一个他们都调用的生成相同URL的单一函数,则会更好 但是,更严重的问题是,您没有保存文件的代码。您创建了URL和AVAudioFile对象,但从未将任何内容保存到该文件中。使用
形成文件名的方式存在阻抗不匹配。在一个函数中,您使用的是URL。在另一个函数中,您使用的是路径字符串。他们没有得到同样的结果 如果您有一个他们都调用的生成相同URL的单一函数,则会更好 但是,更严重的问题是,您没有保存文件的代码。您创建了URL和AVAudioFile对象,但从未将任何内容保存到该文件中。使用AVAudioFile的方法是使用缓冲区和
writeFromBuffer:…
命令。你从不这样做,所以你什么都得不到
@IBAction func saveFinalButton(sender: AnyObject) {
var saveFileName = ""
if saveFileName == "" {
//alert view
var alertViewControllerTextField: UITextField!
let promptController = UIAlertController(title: "Type Something", message: nil, preferredStyle: .Alert)
let ok = UIAlertAction(title: "OK", style: .Default, handler: { (action) -> Void in
saveFileName = alertViewControllerTextField!.text
//save file
let fm = NSFileManager.defaultManager()
let doc = fm.URLForDirectory(.DocumentDirectory, inDomain: .UserDomainMask, appropriateForURL: nil, create: true, error: nil)
let outurl = doc!.URLByAppendingPathComponent("\(saveFileName).aac")
saveFileURL = saveFileName
var err : NSError?
let outfile = AVAudioFile(forWriting: outurl, settings: [
AVFormatIDKey : kAudioFormatMPEG4AAC,
AVNumberOfChannelsKey : 1,
AVSampleRateKey : 22050,
AVEncoderBitRatePerChannelKey : 16
], error: &err)
var done = false
})
promptController.addAction(ok)
promptController.addTextFieldWithConfigurationHandler { (textField) -> Void in
alertViewControllerTextField = textField
}
presentViewController(promptController, animated: true, completion: nil)
}
}
@IBAction func playSavedFile(sender: AnyObject) {
let documentsPath = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as String
let savedFileTest = documentsPath + "/" + saveFileURL + ".aac"
let urlSaveFile = NSURL(fileURLWithPath: savedFileTest)
var error:NSError?
playSavedFile = AVAudioPlayer(contentsOfURL: urlSaveFile, error: &error)
if (playSavedFile != nil) {
println("file found")
} else {
println("No file")
}
}