我尝试使用presentAudioRecorderControllerWithOutputURL
方法使用Apple Watch录制音频。
我正在使用Xcode 7.0 beta 5,iOS9 beta,WatchOS 2 beta& Swift2。
它在模拟器上运行良好。但是,一旦在实际设备上,它就会在调用方法时崩溃。
这是我目前的代码:
@IBAction func onClickSpeech() {
let filePaths = NSSearchPathForDirectoriesInDomains(
NSSearchPathDirectory.DocumentDirectory,
NSSearchPathDomainMask.UserDomainMask,
true)
let documentDir = filePaths.first!
let recSoundURL = documentDir + "/record.m4a"
let nsUrl = NSURL.fileURLWithPath(recSoundURL)
let audioOptions = [
WKAudioRecorderControllerOptionsActionTitleKey : "Recording title",
WKAudioRecorderControllerOptionsAlwaysShowActionTitleKey : false,
WKAudioRecorderControllerOptionsAutorecordKey: true,
WKAudioRecorderControllerOptionsMaximumDurationKey: NSTimeInterval.infinity
]
presentAudioRecorderControllerWithOutputURL(
nsUrl,
preset: WKAudioRecorderPreset.NarrowBandSpeech,
options: audioOptions as [NSObject : AnyObject]) { (didSave, error) -> Void in
print("didSave:\(didSave), error:\(error)")
}
}
recSoundURL
是一条有效路径。
我在设备日志中遇到的错误:
Aug 18 16:42:12 Sennetts-AppleWatch mediaserverd[283] <Error>: 16:42:12.532 EXCEPTION: [0x1f1ac000] >va> 565: kAudioHardwareUnknownPropertyError: "AudioObjectHasProperty([goin/glob/0]) returned false."
Aug 18 16:42:12 Sennetts-AppleWatch mediaserverd[283] <Error>: 16:42:12.555 ERROR: [0x1f1ac000] >va> 240: CAException caught by ExceptionBarrier: 2003332927.
任何想法都会受到高度赞赏,因为我无法理解这一点。感谢。
答案 0 :(得分:0)
请查看下面的代码(使用app group's共享文件夹)
@IBAction func recordAudio() {
let fileName = "audioFile.wav"
let fileManager = NSFileManager.defaultManager()
let container = fileManager.containerURLForSecurityApplicationGroupIdentifier(Constants.kAppGroupId)
self.saveUrl = container?.URLByAppendingPathComponent(fileName)
let duration = NSTimeInterval(120)
let recordOptions = [WKAudioRecorderControllerOptionsMaximumDurationKey : duration]
presentAudioRecorderControllerWithOutputURL(self.saveUrl!,
preset: .WideBandSpeech,
options: recordOptions,
completion: { saved, error in
if let err = error {
print(err.description)
}
if saved {
// Write code to execute when audio file gets saved.
}
})
}