我在HTML5页面中有一个音频元素。我开始播放音频,然后暂停播放。之后,我按回家按钮回到主屏幕并拨打电话。通话结束后,音频元素将自动恢复。这发生在Android 4.0.3上HTML5音频行为
问题是,这不是预期的和期望的行为。不幸的是,当浏览器在后台运行时,JavaScript事件不会被抛出,并且我无法使用Javascript捕获和阻止此行为。
任何帮助表示赞赏。提前致谢。
我在HTML5页面中有一个音频元素。我开始播放音频,然后暂停播放。之后,我按回家按钮回到主屏幕并拨打电话。通话结束后,音频元素将自动恢复。这发生在Android 4.0.3上HTML5音频行为
问题是,这不是预期的和期望的行为。不幸的是,当浏览器在后台运行时,JavaScript事件不会被抛出,并且我无法使用Javascript捕获和阻止此行为。
任何帮助表示赞赏。提前致谢。
我没有一个ICS电话尝试一下,但这里是我会做什么:
pause
显然跟踪音频时间位置。 4.0似乎自动恢复您暂停音频文件的位置
因此,您可以暂停而不是暂停stop
您的音频文件。 不幸的是,stop
不受HTML5支持。
你有一个棘手的解决方案:
pause
音频trackPos = myTrack.currentTime;
trackVol = myTrack.volume;
myTrack.volume = 0;
用户然后当回来并再次击球:
如果trackPos存在
myTrack.currentTime = trackPos;
play
mytrack.volume = trackVol;
delete window.trackPos;
这是棘手,但如果你是应该工作使用Ja vaScript控件。
如果您使用本地控件,但播放和暂停将由浏览器界面管理。那么你应该只存储位置,并开始得到真正的肮脏:
删除来源:
myTrack.removeChid(yourSRCs)
恢复您的SRC和位置上的焦点
等待用户玩
这是一个快速和肮脏的草案,未经测试。但它应该工作
///编辑///
的工作的Javascript演示,至少在我的桌面上。尝试在您的ICS: JSFiddle
(保存文件,我想你无法启动的jsfiddle正常在手机上)
这一切都在理论上是有道理的,但我尝试做这样的事情,它只是恢复并继续播放至少30秒。我没有尝试将音量设置为零。但我确实将音频src和音频设置为null,应该完全擦除它!我想相信,但不幸的是,我真的需要看到这个工作演示。 – mahemoff
如果你可以使用JavaScript控件我可以为你设置一个快速演示 – arkihillel
在这里,你去,添加它 – arkihillel
也许你可以声明一个布尔跟踪是否需要在手动或不暂停,所以你可以评估其对焦点或其它合适的事件。
您是否尝试从DOM中删除音频对象并将其恢复播放?
我一个“的onfocus”事件附加到一个布尔开关,以确定音频播放器的以前的状态,如果你得到的焦点与先前的“暂停”状态,则停止播放,否则播放。
尝试在脚本块以下。它应该工作。
var ppAudio = function(event){
var ppMethod = (event.type == "blur")? "pause" : "play",
audio = document.getElementsByTagName("audio"),
l = audio.length;
for (;l--;) audio[l][ppMethod]();
};
// window.onfocus = ppAudio;
window.onblur = ppAudio;
我想你不需要onfocus事件。但是,它在这里是一个切换的例子。
我见过的问题是缺乏Android浏览器实施的实际问题。除非在Android浏览器上测试此代码,否则它不太可能工作。 – mahemoff
同意 - 音频API(和视频)在Android浏览器上不是很好。我不确定切换到其他应用是否会触发模糊事件,但我编写的代码是基于标准的,并且可以在大多数浏览器中使用。 –
你在android上使用什么浏览器? –
默认安卓浏览器 – serdar
其实这是所需的行为,它发生在甚至基本的诺基亚symbian手机,假设你听歌,你之间有一个电话,然后从你离开的地方,这些设备的歌曲继续甚至不支持多任务处理,但这个功能无处不在。 – AurA