访问Apple Watch的麦克风

13 watchkit

现在有越来越多关于Apple Watch的文档浮出水面,是否有人找到了访问和使用该设备麦克风的方法?

shu*_*223 12

您可以在watchOS 2上访问手表的麦克风.

1)创建用于存储记录输出的文件URL.

NSArray *filePaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
                                                         NSUserDomainMask,YES);
NSString *path = [[filePaths firstObject] stringByAppendingPathComponent:@"rec.m4a"];
NSURL *fileUrl = [NSURL fileURLWithPath:path];
Run Code Online (Sandbox Code Playgroud)

您可以指定扩展名.wav,.mp4和.m4a.

2)调用方法如下:

[self presentAudioRecordingControllerWithOutputURL:fileUrl
                                            preset:WKAudioRecordingPresetWideBandSpeech
                                   maximumDuration:5.0
                                       actionTitle:@"Some Title"
                                        completion:^(BOOL didSave, NSError * __nullable error) {

                                            NSLog(@"didSave:%d, error:%@", didSave, error);
                                        }];
Run Code Online (Sandbox Code Playgroud)

除上述内容外,您还可以选择预设

  • WKAudioRecordingPresetNarrowBandSpeech
  • WKAudioRecordingPresetHighQualityAudio

在Swift中:

self.presentAudioRecordingControllerWithOutputURL(
    self.recFileURL(),
    preset: WKAudioRecordingPreset.WideBandSpeech,
    maximumDuration: 5.0,
    actionTitle: "SomeTitle") { (didSave, error) -> Void in

        print("didSave:\(didSave), error:\(error)")
}
Run Code Online (Sandbox Code Playgroud)

您可以按如下方式播放录制的文件:

self.presentMediaPlayerControllerWithURL(
    fileURL,
    options: nil) { (didPlayToEnd, endTime, error) -> Void in

        print("didPlayToEnd:\(didPlayToEnd), endTime:\(endTime), error:\(error)")
}
Run Code Online (Sandbox Code Playgroud)

您可以在此处查看详细规范.

  • 我希望还可以实时访问麦克风缓冲区,就像使用CoreAudio时一样 (2认同)

BSM*_*SMP 1

我在官方文档中找不到对此的具体提及,但在开发者论坛上,模组的说法是目前不可能。

WatchKit 目前不提供对手表麦克风的访问。不过,您可以通过 WatchKit 扩展访问 iPhone 的麦克风。