Apple Watch可以使用AVFoundation
吗?更具体地说,AVAudioPlayer
和AVAudioRecorder
可以工作吗?
我正在尝试创建一个应用程序,让您可以将声音录制到Apple Watch并让它使用audioplayer播放。感谢
答案 0 :(得分:1)
更新11/28/15
这个答案适用于WatchKit和WatchOS 1.x.虽然我没有测试过自己,但WatchOS 2.x提供了不同的支持,包括硬件。我可以确认,从XCode 7.x开始,编译器行为正常,并且调用AVFoundation的WatchKit 1.x扩展不会构建。
尽管AVAudioRecorder和AVAudioPlayer都在Simulator Apple Watch中运行,但它们实际上并不适用于实际的设备!我在5/5/15开了一个苹果公司的错误(一旦我测试了我在实际手表上写的应用程序。)我的应用程序(记录的手腕音频)确实在模拟器上运行得很好。然而在实际的手表上,它会安装并运行,但AVAudioRecorder"记录"消息根本就不会切换到"录制"。有趣的是,代码不会在任何地方抛出任何异常。它根本就没有记录!
我于2015年5月28日收到了对Apple Bug的回复#34;没有计划解决这个问题"基于"手表不支持AVFoundation。"没有关于是否更新模拟器的说法,以致AVFoundation也无法工作。
所以,目前,Apple Watch仅限于控制录音和电话#34;通过手表扩展到Apple Watch扩展程序支持的手机短信。
答案 1 :(得分:1)
尝试使用WKAudioFilePlayerItem
?
要使用此类播放音频,您需要声明3个变量:
var audioFile: WKAudioFileAsset!
var audioItem: WKAudioFilePlayerItem!
var audioPlayer: WKAudioFilePlayer!
他们在程序中扮演着不同的角色。 audioFile
用于定义NSURL
。例如,如果您有名为" bicycle.mp3"的文件,则可以像这样定义URL路径:
let soundPath = NSBundle.mainBundle().pathForResource("bicycle", ofType: "mp3")
print("load file")
如果你有一个soundpath
,你可以在audioFile中创建一个NSURL:
audioFile = WKAudioFileAsset.init(URL: soundPathURL)
如果您有audioFile
,则将其放在audioPlayerItem
audioItem = WKAudioFilePlayerItem.init(asset: audioFile)
如果您有audioItem
,则将其放入audioPlayer
`audioPlayer = WKAudioFilePlayer(playerItem: audioItem)`
最后,您可以将代码audioPlayer.play()
放在要播放声音的位置
享受!
答案 2 :(得分:0)
简短回答?没有.WatchKit目前不提供对Watch中任何硬件的访问。
答案 3 :(得分:0)
finally ended up with this:
@IBAction func playButtonTapped() {
let options = [WKMediaPlayerControllerOptionsAutoplayKey : "true"]
let filePath = NSBundle.mainBundle().pathForResource("1button", ofType: "wav")!
let fileUrl = NSURL.fileURLWithPath(filePath)
presentMediaPlayerControllerWithURL(fileUrl, options: options,
completion: { didPlayToEnd, endTime, error in
if let err = error {
print(err.description)
}
})
}