swift – 开始录制后Apple Watch录制音频界面崩溃
发布时间:2020-12-14 04:30:07 所属栏目:百科 来源:网络整理
导读:我正在尝试使用presentAudioRecorderControllerWithOutputURL方法使用Apple Watch录制音频. 我正在使用Xcode 7.0 beta 5,iOS9 beta,WatchOS 2 beta Swift2. 它在模拟器上运行良好.但是,一旦在实际设备上,它会在调用方法时崩溃. 这是我目前的代码: @IBAction
我正在尝试使用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. 任何想法都会非常感激,因为我无法想出这一点.谢谢. 解决方法
请看下面的代码(使用
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. } }) } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |