在Apple Watchkit中播放声音

Rob*_*ran 9 objective-c ios apple-watch watchkit

我正在尝试使用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];
Run Code Online (Sandbox Code Playgroud)

shu*_*223 8

我实现如下,它工作正常.(对不起,这是Swift)

1)定义玩家对象的属性

var player: WKAudioFilePlayer!
Run Code Online (Sandbox Code Playgroud)

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)
}
Run Code Online (Sandbox Code Playgroud)

3)如果玩家准备好玩,则播放.

@IBAction func playBtnTapped() {
    switch player.status {
    case .ReadyToPlay:
        player.play()
    case .Failed:
        print("failed")
    case .Unknown:
        print("unknown")
    }
}
Run Code Online (Sandbox Code Playgroud)

此外,它还需要将蓝牙耳机与手表连接起来.

  • 它在我的情况下不起作用.只是没玩. (2认同)