【问题标题】:Is audio recording possible using Apple Watch Simulator?是否可以使用 Apple Watch Simulator 进行音频录制?
【发布时间】:2015-11-06 08:59:02
【问题描述】:

我正在尝试使用 Apple Watch Simulator(Watch OS 2 beta)创建音频录制功能。但是在调用 presentAudioRecorderControllerWithOutputURL 时出现以下错误。

错误:错误域=com.apple.watchkit.errors Code=3 "(null)"

-(void)didSelectRowWithTag:(NSInteger)tag
 {
     NSString*strPath = [NSSearchPathForDirectoriesInDomains(NSDocumentationDirectory, NSUserDomainMask, YES) objectAtIndex:0];
     NSString *strAudioFileName = [strPath stringByAppendingString:[NSString stringWithFormat:@"/%d.caf",tag]];
     NSURL *urlOutPut = [NSURL fileURLWithPath:strAudioFileName];
     NSDictionary *dictMaxAudioRec = @{@"WKAudioRecorderControllerOptionsMaximumDurationKey":@1800};

    [self presentAudioRecorderControllerWithOutputURL:urlOutPut preset:WKAudioRecorderPresetHighQualityAudio options:dictMaxAudioRec completion:^(BOOL didSave, NSError * error) {
        if(didSave)
        {
            NSLog(@"File Saved....");
        }

        NSLog(@"%@",error);
    }];
}

【问题讨论】:

  • 如果您将文件格式从“.caf”更改为“.wav”、“.mp4”或“.m4a”,如@lostAtSeaJoshua 所述

标签: objective-c watchkit audio-recording simulator apple-watch


【解决方案1】:

Watchkit 错误代码 3 是 Watchkit 无效参数错误。看起来错误可能在您的输出文件路径中。您正在附加名称 .caf ,这不是受支持的音频文件输出类型。从它为 URL 参数声明的文档中:

存储记录输出的 URL。文件扩展名确定要录制的音频类型。您可以指定扩展名 .wav、.mp4 和 .m4a。

这是用于录制音频的示例代码。

let path = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.UserDomainMask, true)[0]  
let url = NSURL(fileURLWithPath: path.stringByAppendingPathComponent("dictation.wav"))  
self.presentAudioRecordingControllerWithOutputURL(url, preset: WKAudioRecordingPreset.NarrowBandSpeech, maximumDuration: 30, actionTitle: "Save") { (didSave, error) -> Void in  
if let error = error {  
    print("error: \(error)")  
    return  
}  

if didSave {  
    print("saved!")  
    }  
}  

通过此修复,我仍然不确定模拟器是否支持录音。模拟器不支持每个 API 调用,您可能需要一个真正的手表来测试。请用结果更新我们。

【讨论】:

  • 谢谢 .. 这真的很有帮助。实际问题是“.caf”文件格式。在我将其更改为“.m4a”后,它也会在 Apple Watch 模拟器中打开 AudioRecordingController。我使用模拟器获得了录制的音频文件但是由于模拟器中的硬件(麦克风)限制,我听不到音频。
【解决方案2】:

给你,我认为其他答案不如这个完整或正确(WatchOS 2.1,2016 年 1 月):

func recordAudio(){
        let duration = NSTimeInterval(5)
        let recordOptions =
        [WKAudioRecorderControllerOptionsMaximumDurationKey : duration]
        //CONSTRUCT AUDIO FILE URL
        let fileManager = NSFileManager.defaultManager()
        let container = fileManager.containerURLForSecurityApplicationGroupIdentifier("group.artificialsolutions.applewatch")
        let fileName = "audio.wav"
        saveUrl = container?.URLByAppendingPathComponent(fileName)
        presentAudioRecorderControllerWithOutputURL(saveUrl!,
            preset: .NarrowBandSpeech,
            options: recordOptions,
            completion: { saved, error in
                if let err = error {
                    print(err.description)
                }
                if saved {
                    print("Audio Saved")
                }
        })
    }

【讨论】:

    猜你喜欢
    • 2018-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-28
    • 2016-04-13
    • 1970-01-01
    • 2018-12-13
    • 1970-01-01
    相关资源
    最近更新 更多