首页 文章

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

提问于
浏览
5

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

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

2 回答

  • 4

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

    • openParentApplication:reply: - 如果当前未运行,则在后台打开应用

    • 达尔文通过类似MMWormhole的通知

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

  • 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];
    

相关问题