蘋果手錶可以使用AVFoundation
嗎?更具體地說,AVAudioPlayer
和AVAudioRecorder
可以工作嗎?蘋果手錶可以使用AVFoundation嗎?
我正在嘗試製作一個應用程序,讓您可以將聲音錄製到Apple Watch,並使用audioplayer進行播放。謝謝
蘋果手錶可以使用AVFoundation
嗎?更具體地說,AVAudioPlayer
和AVAudioRecorder
可以工作嗎?蘋果手錶可以使用AVFoundation嗎?
我正在嘗試製作一個應用程序,讓您可以將聲音錄製到Apple Watch,並使用audioplayer進行播放。謝謝
簡答題? WatchKit目前不提供對手錶中任何硬件的訪問。
UPDATE 15年11月28日
這個答案適用於WatchKit和WatchOS 1.x的儘管我沒有測試過自己,但WatchOS 2.x提供了不同的支持,包括硬件。我可以確認從XCode 7.x開始,編譯器的行爲是否正確,並且調用AVFoundation的WatchKit 1.x擴展不會生成。
儘管AVAudioRecorder和AVAudioPlayer在模擬器Apple關注這兩個工作,他們實際上並沒有在實際設備上工作!在2015年5月5日,我開了一個與蘋果的錯誤(一次我測試了一個我寫在我的實際手錶上的應用程序)。我的應用程序(手腕上的音頻記錄)在模擬器上的確很好地工作。然而,在實際的手錶上,它會安裝並運行,但AVAudioRecorder「記錄」信息根本不會切換到「記錄」。有趣的是,代碼不會在任何地方拋出任何異常。它根本不記錄!
2015年5月28日,我收到了一個針對Apple Bug的回覆,表示「沒有計劃解決這個問題」基於「AVFoundation在手錶上不受支持」。無論是否更新模擬器,AVFoundation也無法正常工作。
因此,目前Apple Watch僅限於通過Apple Watch擴展支持的手機短信功能來控制「在手機上」進行錄製。
嘗試使用WKAudioFilePlayerItem
? 要使用這個類來播放音頻,你需要聲明3個變量:
var audioFile: WKAudioFileAsset!
var audioItem: WKAudioFilePlayerItem!
var audioPlayer: WKAudioFilePlayer!
他們的程序中不同的角色。對於audioFile
用於定義NSURL
。當你有一個soundpath
let soundPath = NSBundle.mainBundle().pathForResource("bicycle", ofType: "mp3")
print("load file")
,你把它裏面的AudioFile一個NSURL:例如,如果你有文件名爲「bicycle.mp3」,你可以這樣定義URL路徑
audioFile = WKAudioFileAsset.init(URL: soundPathURL)
當你有一個audioFile
,你把它裏面的audioPlayerItem
audioItem = WKAudioFilePlayerItem.init(asset: audioFile)
當你有audioItem
,你把它裏面的audioPlayer
`audioPlayer = WKAudioFilePlayer(playerItem: audioItem)`
最後,你可以把代碼audioPlayer.play()
要播放的聲音
享受!
我有一些遺留代碼,我不得不重構。 '@interface RecordController()
終於結束了這一點:
@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)
}
})
}
我有同樣的問題,misteriously AVFoundation完美的作品在我的第一個項目(WatchOS 2.1的iOS 9.2),但是當我試圖做同樣在第2個項目,我收到錯誤。 – Josh