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
元素播放流,我的应用程序跟踪显示 play
和 playing
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 音频无法恢复播放的主要内容,如果未能解决你的问题,请参考以下文章