随着越来越多的苹果手表文档浮出水面,是否有人找到了访问和使用设备麦克风的方法?
您可以在watchOS 2上访问 Watch的麦克风。
1)创建一个文件URL以存储记录的输出。
NSArray *filePaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
NSUserDomainMask,YES);
NSString *path = [[filePaths firstObject] stringByAppendingPathComponent:@"rec.m4a"];
NSURL *fileUrl = [NSURL fileURLWithPath:path];
您可以指定扩展名为 .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);
}];
除了上述内容外,您还可以选择预设。
在Swift中:
self.presentAudioRecordingControllerWithOutputURL(
self.recFileURL(),
preset: WKAudioRecordingPreset.WideBandSpeech,
maximumDuration: 5.0,
actionTitle: "SomeTitle") { (didSave, error) -> Void in
print("didSave:\(didSave), error:\(error)")
}
你可以按照以下步骤播放录制的文件:
self.presentMediaPlayerControllerWithURL(
fileURL,
options: nil) { (didPlayToEnd, endTime, error) -> Void in
print("didPlayToEnd:\(didPlayToEnd), endTime:\(endTime), error:\(error)")
}
您可以在这里查看详细规格。
是的,它在Watch OS 2中被引入。
但正如苹果所提到的,这部分API处于预览阶段,并且已经发生了很多变化。至于Watch OS 2 beta 5,相应的接口(用Swift编写)已更改为:
@available(watchOS 2.0, *)
public func presentAudioRecorderControllerWithOutputURL(URL: NSURL, preset: WKAudioRecorderPreset, options: [NSObject : AnyObject]?, completion: (Bool, NSError?) -> Void)
因此,如果您想尝试这个新功能,请始终参考您正在使用的SDK文档。
顺便说一下,这个示例项目将是一个很好的开始:
https://github.com/shu223/watchOS-2-Sampler
然而,示例中使用的一些API已经发生了变化,比如这个录制API。
我认为WWDC 2015和新的watchOS 2 beta带来了好消息:
很抱歉,目前文档中没有关于音频的内容。
这是在 Interface.storyboard 中之前添加的按钮的操作中,也不要忘记在 info.plist 中添加隐私 - 使用麦克风说明字符串。
@IBAction func btnActionRecord() {
var filePath: NSURL!
if let dir: NSString = NSSearchPathForDirectoriesInDomains(.documentDirectory, .allDomainsMask, true).first as NSString? {
let path = dir.appendingPathComponent("myRecord.wav")
filePath = NSURL(string: path)
let audioOptions = [
WKAudioRecorderControllerOptionsActionTitleKey: "Save",
WKAudioRecorderControllerOptionsAlwaysShowActionTitleKey: true,
WKAudioRecorderControllerOptionsAutorecordKey: true,
WKAudioRecorderControllerOptionsMaximumDurationKey: 5.0] as [String : Any]
presentAudioRecorderController(withOutputURL: filePath! as URL, preset: .highQualityAudio, options: audioOptions, completion: {
(didSave, error) -> Void in
if didSave {
print("Audio saved")
let options = [WKMediaPlayerControllerOptionsAutoplayKey: true]
self.presentMediaPlayerController(with: self.filePath as URL, options: options) {
(didPlayToEnd, endTime, error) -> Void in
if didPlayToEnd {
print("Audio finished")
}
if error != nil {
print(error!.self)
}
}
}
if error != nil {
print(error!.localizedDescription)
}
})
}
}