iPhone 上来电后,Phonegap HTML5 音频无法恢复播放

Posted

技术标签:

【中文标题】iPhone 上来电后,Phonegap HTML5 音频无法恢复播放【英文标题】:Phonegap HTML5 audio does not resume playback after incoming phone call on iPhone 【发布时间】:2013-06-04 17:18:09 【问题描述】:

我使用 PhoneGap 创建了一个应用程序,可以播放在线流中的音乐。当 iPhone 被锁定时它会继续在后台播放,当有来电时它会停止。

问题是当电话结束时,音乐不再响起。我使用 html5 audio 元素播放流,我的应用程序跟踪显示 playplaying HTML5 音频元素事件在通话结束后触发。

但是,它根本不会产生任何音乐或声音。

【问题讨论】:

【参考方案1】:

在您的应用程序中连接 Cordova 的暂停和恢复事件,如果您处于暂停状态,那么您的应用程序将暂停并且不会播放任何内容。您应该在 resume 事件上调用 play 函数。有关更多信息,请参阅活动:http://cordova.apache.org/docs/en/2.6.0/cordova_events_events.md.html#Events

【讨论】:

对不起,但这不是我的情况的解决方案。当应用程序进入后台时pause 事件被触发(即使音乐仍在后台播放),当应用程序进入前台时resume 事件被触发。如果在电话开始和电话结束时触发了类似的事件,它可能会起作用。【参考方案2】:

在启用音频设备之前执行播放命令时发生 为您的应用程序。

是的,这是因为当您的呼叫到达时应用程序关闭,要返回应用程序并播放音频需要几秒钟,简而言之,在您的通话结束后启动音频设备需要几秒钟。如果您的播放指令已执行在为您的应用程序启动音频设备之前

你可以通过cordova的恢复事件来解决这个问题

【讨论】:

问题是,当电话开始时,ios 会自动停止来自我的应用程序的音频。通话结束时,iOS 会自动继续播放我的应用程序中的音频。你说的很有道理,但是,我会通过处理resume事件来阻止iOS在音频设备准备好之前自动开始音频播放吗?【参考方案3】:

作为一名安卓程序员,也有类似的问题。在处理 HTML5 中的 CordovaWeb 视图时,如果活动因其他原因(例如电话)而中断,则需要在代码中进行处理。在 android 中,当有中断时,会调用 onPause 或类似的方法。在其中,您需要保存状态以及 web 视图的页面 URL。

当您导航返回时,您需要恢复状态。

我知道我说的是 Android,而这是 iOS,但在做类似的事情时会有一些重叠。

见:Save & restoring WebView in an embedded PhoneGap app

【讨论】:

以上是关于iPhone 上来电后,Phonegap HTML5 音频无法恢复播放的主要内容,如果未能解决你的问题,请参考以下文章

phonegap / iphone / zxing

Phonegap 事件在 iPhone 中不起作用

CSS - iphone中的绝对定位? (phonegap, jqtouch)

Phonegap 只针对 iPhone(不是 iPad)?

iPhone的Phonegap真实分辨率

Phonegap-(Android/iphone) 多张图片的图库有问题吗?