Теперь, когда все больше и больше документов на Apple Watch всплывают, кто-нибудь нашел способ доступа и использования микрофона устройства?
Доступ к микрофону Apple Watch
Ответ 1
Вы можете получить доступ к микрофону "Watch Watch" на watchOS 2.
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);
}];
Вы можете выбрать предустановку в дополнение к приведенному выше
- WKAudioRecordingPresetNarrowBandSpeech
- WKAudioRecordingPresetHighQualityAudio
В 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)")
}
Вы можете проверить спецификацию детали здесь.
Ответ 2
Я не мог найти конкретного упоминания об этом в официальной документации, но на Форумы разработчиков слово из модов заключается в том, что оно не является" t в настоящее время возможно.
В настоящее время WatchKit не предоставляет доступ к микрофону часов. Однако у вас есть доступ к микрофону iPhone из расширения WatchKit.
Ответ 3
Если вы ищете диктовку, вот некоторые ранние выводы по SDK: http://natashatherobot.com/watchkit-text-input-dictation-api/
Очевидно, не может быть протестирован до тех пор, пока аппаратное обеспечение не будет: D
Ответ 4
Я думаю, что есть хорошие новости от WWDC 2015 и новая бета-версия watchOS 2:
К сожалению, на данный момент в документации отмечается аудио.
Ответ 5
Да, он представлен в Watch OS 2.
Но, как упоминалось Apple, эта часть API находится в предварительном просмотре, и это сильно изменилось. Что касается Watch OS 2 beta 5, соответствующий интерфейс (в Swift) изменился на:
@доступный (watchOS 2.0, *)
public func presentAudioRecorderControllerWithOutputURL (URL: NSURL, пресет: WKAudioRecorderPreset, опции: [NSObject: AnyObject]?, завершение: (Bool, NSError?) → Пустота)
Поэтому, пожалуйста, всегда обращайтесь к документу SDK, который вы используете, если вы хотите попробовать эту новую функцию.
Кстати, этот примерный проект был бы хорошим началом:
https://github.com/shu223/watchOS-2-Sampler
Тем не менее, некоторые из API, используемые в образце, уже изменены, как и эта запись.
Ответ 6
Это внутри действия от кнопки, ранее добавленной в интерфейсную панель, также не забудьте добавить строку "Конфиденциальность - описание использования микрофона" в 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)
}
})
}
}