如何为手表套件应用播放声音

时间:2015-02-20 22:46:54

标签: ios watchkit

根据我的理解,目前无法通过手表上的手表套件应用播放声音。如果是这种情况,播放声音的最佳方式是什么?目前我正在使用openParentApplication:reply:在播放声音的手机上运行代码。这是最好的方式吗?

更新:我还发现我可以使用与父应用程序相同的方法直接从手表扩展程序播放音频。不知道如果不在模拟器上,这实际上会播放。

2 个答案:

答案 0 :(得分:4)

目前还没有任何方法可以在手表上播放音频。您的假设是100%正确的。 Apple不希望在运行时将音频片段从Watch Extension传输到Watch。目前,唯一支持的传输缓存系统是images。目前,您必须在iOS设备上播放音频。您可以使用以下方法之一触发播放声音:

  • openParentApplication:reply: - 如果当前未运行,则在后台打开应用
  • 达尔文通过类似MMWormhole
  • 的通知

从Watch扩展中播放声音肯定是一个灰色区域。我的猜测是它会在iOS设备上播放,或者在使用设备进行测试时根本不播放。我当然会建议反对这种方法。您的Watch Extension通常只会在非常短的时间内开放。从iOS应用程序播放音频会更好,因为它可以保证继续运行。

答案 1 :(得分:3)

从watchOS 2开始,您可以使用手表上的WKAudioFilePlayer播放音频文件。似乎不支持mp3文件,但是caf和wav都是。将声音文件复制到扩展目标。

设定:

NSURL *assetURL = [[NSBundle mainBundle] URLForResource:@"file" withExtension:@"wav"];
WKAudioFileAsset *asset = [WKAudioFileAsset assetWithURL:assetURL];
WKAudioFilePlayerItem *playerItem = [WKAudioFilePlayerItem playerItemWithAsset:asset];
WKAudioFilePlayer *audioFilePlayer = [WKAudioFilePlayer playerWithPlayerItem:playerItem];

玩:

if (audioFilePlayer.status == WKAudioFilePlayerStatusReadyToPlay) {
        [self.audioFilePlayer play];
}

或者,您可以使用WKInterfaceMovie类:

[self presentMediaPlayerControllerWithURL:assetURL options:nil completion:nil];