【问题标题】:Is there REALLY no way to play short sounds on Apple watch without a UI?真的没有办法在没有 UI 的 Apple Watch 上播放短声音吗?
【发布时间】:2016-09-24 14:16:15
【问题描述】:

作为学习练习,我决定为 Apple Watch(iOS 9.3、WatchKit 2.0)编写一个西蒙游戏。

我在 GarageBand 中创建了 4 个短钢琴音符。我在 Audacity 中将它们转换为 MP3 文件,却发现 Apple Watch 不支持 MP3。好,很好。我需要将它们转换为 WAV 或 CAF 文件。叹息……

无论如何,研究一下,似乎播放任何声音的唯一方法就是在手表上显示一个媒体控制器。 (使用presentMediaPlayerControllerWithURL:options:completion:WKInterfaceMovie

我只想在用户按下按钮时播放不同的 1/4 秒钢琴声音。

当前的 WatchKit 是否有其他方式,不需要显示媒体控制器?

【问题讨论】:

  • 这个答案说如果你有一个蓝牙耳机同步你可以做到...stackoverflow.com/a/31759799/1671729除此之外,我完全同意Apple的做法与现实世界不匹配...
  • 感谢您的意见。我看到了该线程,并确认该代码仅在您配对了蓝牙设备时才有效。如果没有,您会收到一条消息,要求您连接一个。很奇怪。
  • 你提交a feature request了吗?虽然它无助于解决“当前 WatchKit”的困境,但 Apple 确实会关注对特定功能的请求数量。

标签: audio watchkit watchos-2


【解决方案1】:

使用 watchOS4,我使用 WKInterfaceMovie 让它工作。它没有那么繁重,而且比presentMediaPlayerControllerWithURL 好得多。使用 IB,您需要将 WKInterfaceInlineMovie 对象拖到表盘上(将其调整为非常小 - 您不会看到它)将对象连接到您的 WKInterfaceController:

 @IBOutlet weak var myMovie: WKInterfaceInlineMovie!

我将几个按钮拖到界面控制器上,并从与按钮关联的 IBAction 中调用以下命令,并带有正确声音文件的标识符:

   func playSound(numberOfNote: Int) {
        let soundURL = Bundle.main.url(forResource: "note\(numberOfNote)", withExtension: "wav")!
        myMovie.setMovieURL(soundURL)
        myMovie.playFromBeginning()
    }

我点击一个按钮,声音立即响亮(不带耳机)(与其他方法不同,它有很长的暂停并且需要关闭所提供的控制器)。这应该非常适合您声明的需求。 ?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多