【问题标题】:Is there a way to detect a mobile Safari audio interruption — headphones unplugged — with javascript?有没有办法用 javascript 检测移动 Safari 音频中断——耳机拔掉了?
【发布时间】:2012-05-01 06:03:59
【问题描述】:

我正在开发一个使用 jQuery 和 SoundManager 构建的 HTML5 音频播放器。

到目前为止,我们无法确定是否有办法在移动版 Safari 中检测音频中断事件(例如拔下耳机)。现在,即使 iOS 已暂停播放器中的任何音频播放,我们仍会遇到播放器处于“正在播放”状态。

【问题讨论】:

  • 你是说音频播放停止但播放器的UI卡在播放模式?你能提供一些示例来源吗?
  • 你说得对,布赖恩。除了放入整个 SoundManager 代码等...您还可以看到播放器的实时版本here

标签: javascript jquery mobile-safari html5-audio soundmanager2


【解决方案1】:

我现在在使用 WebRTC 的网页上遇到了类似的问题。我发现如果你有一个AudioContext 对象,你可以监听它的statechange 事件。在拔下耳机时,上下文状态变为suspended

https://developer.mozilla.org/en-US/docs/Web/API/BaseAudioContext/onstatechange

【讨论】:

    【解决方案2】:

    您是否尝试过轮询属性 object.position(SM2 对象)或 object.currentTime(音频对象)甚至属性 object.paused?您可以确保每次轮询时 position/currentTime 都会增加 - 如果不采取行动。

    【讨论】:

    • 这当然是一个选项,但它与 lib 不一致,因为我们正在响应发生的事件——实际发生的事件而不是未发生的事件。
    • 如果还没有事件并且保持代码完全由事件驱动是一个大问题,那么您始终可以在 SM2 库中实现轮询并触发您在代码中处理的新事件或创建您自己的包装库并以这种方式添加事件。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多