在 Apple Watchkit 中播放声音
Posted
技术标签:
【中文标题】在 Apple Watchkit 中播放声音【英文标题】:Playing sound in Apple Watchkit 【发布时间】:2015-06-09 22:51:10 【问题描述】:我正在尝试使用 WKAudioFilePlayer 通过 watchkit 扩展播放声音,但是没有声音播放。我将触觉反馈代码用作一种调试,以确保它执行它(它确实如此)。附带说明,静音未打开,文件名正确。
NSURL *falcon = [NSURL fileURLWithPath:[[NSBundle mainBundle]
pathForResource:@"falcon"
ofType:@"mp3"]];
WKAudioFileAsset *asset = [WKAudioFileAsset assetWithURL:falcon];
WKAudioFilePlayerItem *sound = [WKAudioFilePlayerItem playerItemWithAsset:asset];
audioPlayer = [WKAudioFilePlayer playerWithPlayerItem:sound];
[audioPlayer play];
WKInterfaceDevice *device = [WKInterfaceDevice currentDevice];
[device playHaptic:WKHapticTypeClick];
【问题讨论】:
文件目标成员是否设置为您的手表套件扩展名?如果为您的应用设置了会员资格,它将不会播放。 我不确定如何找到,但是该文件已被复制到 watchkit 扩展中。我也无法调试它,beta 1 似乎在加载调试会话时出现问题。 【参考方案1】:我实现如下,效果很好。 (对不起,是斯威夫特)
1) 为播放器对象定义一个属性
var player: WKAudioFilePlayer!
2) 唤醒时设置资产和播放器
override func awakeWithContext(context: AnyObject?)
super.awakeWithContext(context)
let filePath = NSBundle.mainBundle().pathForResource("se_tap", ofType: "m4a")!
let fileUrl = NSURL.fileURLWithPath(filePath)
let asset = WKAudioFileAsset(URL: fileUrl)
let playerItem = WKAudioFilePlayerItem(asset: asset)
player = WKAudioFilePlayer(playerItem: playerItem)
3) 播放如果玩家准备好播放。
@IBAction func playBtnTapped()
switch player.status
case .ReadyToPlay:
player.play()
case .Failed:
print("failed")
case .Unknown:
print("unknown")
另外,需要将蓝牙耳机与watch连接。
【讨论】:
我在 Obj-c 中的布局和你一样。使用模拟器时,我会收到相同的蓝牙耳机通知,但是在实际手表上运行时,它只会使应用程序崩溃并在几秒钟后关闭。好像这是播放音乐的方法,我只是想在手表上播放自定义通知声音。 我试过了,声音只播放一次。而且它只适用于蓝牙耳机。 请问如何在Watch App上实现流媒体播放? @Markus 你能找到如何播放流媒体手表应用以上是关于在 Apple Watchkit 中播放声音的主要内容,如果未能解决你的问题,请参考以下文章
声音未正确播放,嗡嗡声而不是录制的声音 - Portaudio