在 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 中播放声音的主要内容,如果未能解决你的问题,请参考以下文章

使用 WatchKit 2 播放声音

声音未正确播放,嗡嗡声而不是录制的声音 - Portaudio

在 JavaScript \ jQuery 上播放游戏声音

是否可以在 Apple Watch 上同时播放多个声音文件(如混音)?

HTML:鼠标悬停或单击时播放声音

如何使用 Apple 推送通知播放自定义声音?